3228. 俄罗斯方块 - AcWing题库
#include<bits/stdc++.h>
using namespace std;
const int N = 20;
int g[N][N], s[N][N];
int p[4][4];
bool draw(int x,int y)
{
memcpy(s, g, sizeof s);
for (int i = 0; i < 4; i++)
for (int j = 0; j < 4; j++)
if (p[i][j])
{
int a = x + i, b = y + j;
s[a][b]++;
if (s[a][b] == 2)return true;
}
return false;
}
int main()
{
for (int i = 0; i < 15; i ++)
for (int j = 0; j < 10; j ++)
cin >> g[i][j];
for (int i = 0; i < 4; i ++)
for (int j = 0; j < 4; j ++)
cin >> p[i][j];
for (int i = 0; i< 10; i++)g[15][i] = 1;
int c; cin >> c; c--;
for (int i = 0;;i++)
{
if (draw(i, c))
{
draw(i-1,c);
break;
}
}
for (int i = 0; i < 15; i++)
{
for (int j = 0; j < 10; j++)
cout << s[i][j] << " ";
cout << endl;
}
return 0;
}
