设第三层的数为x, 则第三层已知的两个数相加再加上2 * x就等于第一层的数。
以此类推。
#include <iostream>
#include <cstdio>
#include <cstring>
#define MAXN 10
using namespace std;
int wall[MAXN][MAXN];
int main() {
#ifndef ONLINE_JUDGE
freopen("test", "r", stdin);
#endif // ONLINE_JUDGE
int T;
cin >> T;
while(T--) {
memset(wall, 0, sizeof(wall));
for(int i = 1; i <= 9; i += 2)
for(int j = 1; j <= i; j += 2)
cin >> wall[i][j];
for(int i = 3; i <= 9; i += 2)
for(int j = 2; j <= i; j += 2)
wall[i][j] = (wall[i - 2][j - 1] - wall[i][j - 1] - wall[i][j + 1]) / 2;
for(int i = 1; i <= 9; i++) {
for(int j = 1; j <= i; j++) {
if(j > 1) printf(" ");
if(!(i & 1)) printf("%d", wall[i + 1][j] + wall[i + 1][j + 1]);
else printf("%d", wall[i][j]);
}
printf("\n");
}
}
return 0;
}