首页 > 代码库 > UVa 11040 (水题) Add bricks in the wall

UVa 11040 (水题) Add bricks in the wall

题意:

技术分享

45块石头如图排列,每块石头上的数等于下面支撑它的两数之和,求其余未表示的数。

分析:

首先来计算最下面一行的数,A71 = A81 + A82 = A91 + 2A92 + A93,变形得到A92 = (A71 - A91 - A93) / 2.

以此类推,就能得到最下面一整行的数。有了这个“地基”以后,所有的数就都能算出来了。

技术分享
 1 #include <cstdio> 2  3 int a[10][10]; 4  5 int main() 6 { 7     //freopen("in.txt", "r", stdin); 8     int T; 9     scanf("%d", &T);10     while(T--)11     {12         for(int i = 1; i <= 9; i += 2)13             for(int j = 1; j <= i; j += 2)14                 scanf("%d", &a[i][j]);15         for(int i = 2; i <= 8; i += 2)16             a[9][i] = (a[7][i-1]-a[9][i-1]-a[9][i+1])/2;17         for(int i = 8; i >= 1; --i)18         {19             if((i & 1) == 0)20             {21                 for(int j = 1; j <= i; ++j)22                     a[i][j] = a[i+1][j] + a[i+1][j+1];23             }24             else25             {26                 for(int j = 2; j <= i; j += 2)27                     a[i][j] = a[i+1][j] + a[i+1][j+1];28             }29         }30 31         for(int i = 1; i <= 9; ++i)32         {33             for(int j = 1; j < i; ++j)34                 printf("%d ", a[i][j]);35             printf("%d\n", a[i][i]);36         }37 38     }39 40     return 0;41 }
代码君

 

UVa 11040 (水题) Add bricks in the wall