日期:2014-05-20  浏览次数:20758 次

新人求教!巧取数字:1-6这6个数,放进成倒三角排列的○里,要求数字不能重复,且下方数字为相邻上方两个数字之差
一个公司的面试题,有点类似解谜,求各位大神帮忙

题目是这样的:
1-6这6个数,放入倒三角排列的○里,要求不能重复,且下方数字为相邻上方两个数字之差,问有多少种排列,要求用程序写出来

给了一个提示,有这样一个图形
○○
 ○
那么
1 3 3 1
 2 和 2 都是正确的

问题是在下图的○里填入符合题目要求的数字,有多少种排列呢
○○○
 ○○
  ○

我自己在纸上写了一种
1 6 4
 5 2
  3
供各位前辈理解题意...

我想了好久实在没有程序化思路只有求助了
望各位前辈帮忙
不胜感谢!

------解决方案--------------------
一个很笨的办法,供参考啊!
Java code
package csdn.calculate;
import java.util.Arrays;
public class SixNumberArrange
{
    public static final int MAX=6;                //数据范围。
    //对数组进行判断,逻辑即是否符合题目要求。符合返回true,否则返回false.
    //
    public static boolean isOk(int[] inputArray)
    {
        if((Math.abs(inputArray[0]-inputArray[1])==inputArray[3])&&
                (Math.abs(inputArray[1]-inputArray[2])==inputArray[4])&&
                (Math.abs(inputArray[3]-inputArray[4])==inputArray[5]))
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    //主函数。
    public static void main(String[] args)
    {
        //创建一个整型数组。
        int[] input=new int[MAX];        //create an array
        //判断开始。
        for(int i=1;i<=MAX;i++)
        {
         input[0]=i;                //数组第一个位置。
         for(int j=1;j<=MAX;j++)
         {
          if(j==i) { continue;}            //前面如果出现了这个数,循环从新开始,以此类推。
          input[1]=j;
         
          for(int h=1;h<=MAX;h++)
          {
           if(h==i||h==j){continue;}
           input[2]=h;
           for(int k=1;k<=MAX;k++)
           {
                 if(k==i||k==j||k==h){continue;}
             input[3]=k;
             for(int m=1;m<MAX;m++)
             {
               if(m==i||m==j||m==h||m==k){ continue;}
               input[4]=m;
               for(int n=1;n<=MAX;n++)
               {
             if(n==i||n==j||n==h||n==k||n==m){continue;}
             input[5]=n;
             if(isOk(input))            //判断。
             {
                   System.out.println(Arrays.toString(input));
             }
               }
             }
           }
          }
         }
        }
    }
}