基础模拟,循环结构,二维数组
计算板块1与地图1最早接触方块的下降距离,就是板块图案的最大下降距离
用a数组保存地图,c数组保存板块中各点相对坐标,板块中方块的列坐标分别加上left-1为板块中方块在地图中的初始坐标,计算板块方块与地图方块相距最小的一列的上下两方快距离,即为板块整体下降距离(要注意边界,地图底部可能没有方块),得到后计算输出即可
#include<stdio.h>
int main() {
int a[20][15] = { 0 }, c[4][2] = { 0 }, left, temp, num = 0;
for (int i = 1; i <= 15; i++)
for (int j = 1; j <= 10; j++)
scanf("%d", &a[i][j]);
for (int i = 1; i <= 4; i++)
for (int j = 1; j <= 4; j++) {
scanf("%d", &temp);
if (temp) {
c[num][0] = i; // 记录板块中的每个方块初始坐标;
c[num++][1] = j;
}
}
scanf("%d", &left);
for (int i = 0; i < 4; i++)
c[i][1] += left - 1; // 加上初始出现位置;
while (1) { // 因为肯定有方块所以不会出现死循环的情况;
for (int i = 0; i < 4; i++) if (a[c[i][0] + 1][c[i][1]] || c[i][0] == 15) { // 如果触底打印图像;
for (int i = 0; i < 4; i++)
a[c[i][0]][c[i][1]] = 1;
for (int i = 1; i <= 15; i++) {
for (int j = 1; j <= 10; j++) printf("%d ", a[i][j]);
printf("\n");
}
return 0;
}
for (int i = 0; i < 4; i++) c[i][0]++; // 未触底板块整体向下移动;
}
}