#include <stdio.h> int main() { int a[16][10]={1},i,j; for(i=0;i<15;i++){ for(j=0;j<10;j++){ scanf("%d",&a[i][j]); } } int b[4][4],q[4],tem[4][2],z=0; //用q【】记录矩阵中方块的行数 for(i=0;i<4;i++) { for(j=0;j<4;j++) { scanf("%d",&b[i][j]); if(b[i][j]) { q[z]=tem[z][0]=i; tem[z][1]=j; z++; } } } int k; scanf("%d",&k); for(i=0;i<4;i++) { tem[i][1]+=k-1; } for(i=0;i<3;i++) { for(j=i+1;j<4;j++) { if(tem[i][1]==tem[j][1]) tem[i][0]=tem[j][0]; } //最下方的方块为0,下落一行,故需要记录最下方方块位置 tem[][2]记录 } while(a[tem[0][0]+1][tem[0][1]]==0 &&a[tem[1][0]+1][tem[1][1]]==0 &&a[tem[2][0]+1][tem[2][1]]==0 &&a[tem[3][0]+1][tem[3][1]]==0) { for(i=0;i<4;i++) { //当图形最下方方块的下一个方块都为0,q[i]增加1 tem[i][0]++; q[i]++; } } for(i=0;i<4;i++) { a[q[i]][tem[i][1]]=1; } for(i=0;i<15;i++) { //输出 for(j=0;j<10;j++) { printf("%d",a[i][j]); if(j==9) printf("\n"); else printf(" "); } } return 0; }