差三角

标题:计算差三角

仔细观察下面的数字组成的三角形:

    3
   1 4
  5 6 2

看出什么特征吗?
首先,它包含了1~6的连续整数。
重要的是:每个数字都是其下方相邻的两个数字的差(当然是大数减去小数)
满足这样特征的三角形,称为:差三角。

你的任务是找出1~15的整数组成的一个更大的差三角。其形如:

      ?
     4 ?
    ? ? ?
   * ? ? ?
  ? ? ? ? ?

其中,只给出了一个确定的数字:4
请确定出“*” 代表的是哪个一个数字。

直接提交该数字,不要提交多余的内容。

//暴力求解
#include<stdio.h>
#include<math.h>
#include<string.h>
int a[5][6];
int v[16];

int fun()
{
    int i,j;
    for(i=0;i<5;i++)
        for(j=0;j<=i;j++)
            if(!v[a[i][j]])
                v[a[i][j]]=1;
            else
                return 0;
            if(a[1][0]==4)
            {
                for(i=0;i<5;i++)
                {
                    for(j=0;j<=i;j++)
                        printf("%d ",a[i][j]);
                    printf("\n");
                }
                return a[3][0];
            }
            return 0;
}

void t()
{
    a[3][0]=abs(a[4][0]-a[4][1]);
    a[3][1]=abs(a[4][1]-a[4][2]);
    a[3][2]=abs(a[4][2]-a[4][3]);
    a[3][3]=abs(a[4][3]-a[4][4]);

    a[2][0]=abs(a[3][0]-a[3][1]);
    a[2][1]=abs(a[3][1]-a[3][2]);
    a[2][2]=abs(a[3][2]-a[3][3]);

    a[1][0]=abs(a[2][0]-a[2][1]);
    a[1][1]=abs(a[2][1]-a[2][2]);

    a[0][0]=abs(a[1][0]-a[1][1]);
}


    
int main()
{
    int i,j,u,f,k,g;
    for(i=1;i<=15;i++)
    {
        for(j=1;j<=15;j++)
        {
            for(k=1;k<=15;k++)
            {
                for(u=1;u<=15;u++)
                {
                    for(f=1;f<=15;f++)
                    {
                        a[4][0]=i;
                        a[4][1]=j;
                        a[4][2]=k;
                        a[4][3]=u;
                        a[4][4]=f;
                        t();
                        memset(v,0,sizeof(v));
                        if(g=fun())
                            printf("%d\n",g);
                    }
                }
            }
        }
    }
    return 0;
5
4 9
7 11 2
8 1 12 10
6 14 15 3 13
8

 


}

 

posted @ 2013-04-11 14:05  萧凡客  阅读(258)  评论(0编辑  收藏  举报