心得:
记录坐标就好。
代码:
#include <cstdio>
int a[20][20];
int b[5][5];
int pos,co;
struct node{
int x,y;
}c[5];
int main()
{
for(int i = 1;i <= 15;++i)
for(int j = 1;j <= 10;++j)
scanf("%d",&a[i][j]);
int cnt = 0;
for(int i = 1;i <= 4;++i)
{
for(int j = 1;j <= 4;++j)
{
scanf("%d",&b[i][j]);
if(b[i][j])
{
c[cnt].x = i;
c[cnt++].y = j;
}
}
}
scanf("%d",&co);
for(int i = 0;i < 4;++i)
c[i].y += co - 1;
while(c[0].x < 15 && c[1].x < 15 && c[2].x < 15 && c[3].x < 15)
{
if(!a[c[0].x + 1][c[0].y] && !a[c[1].x + 1][c[1].y] && !a[c[2].x + 1][c[2].y] && !a[c[3].x + 1][c[3].y])
{
c[0].x++;
c[1].x++;
c[2].x++;
c[3].x++;
}
else break;
}
a[c[0].x][c[0].y] = a[c[1].x][c[1].y] = a[c[2].x][c[2].y] = a[c[3].x][c[3].y] = 1;
for(int i = 1;i <= 15;++i)
{
printf("%d",a[i][1]);
for(int j = 2;j <= 10;++j)
printf(" %d",a[i][j]);
printf("\n");
}
return 0;
}