AcWing 3228. 俄罗斯方块
原题链接
简单
作者:
把这题Ac了
,
2024-11-26 19:52:55
,
所有人可见
,
阅读 1
#include <iostream>
#include <cstring>
using namespace std;
//15 * 10
int g[20][20],buckup[20][20],p[20][20],s[4][4];
int d,l = 0;
bool draw(int u){
memcpy(buckup,p,sizeof p);
memcpy(p,g,sizeof g);
for(int i = 3;i >= 0;i--){
for(int j = 0;j < 4;j++){
int x = s[i][j] + g[12 - u + i][d - 1 + j];
if(x == 2) return false;
p[12 - u + i][d - 1 + j] = x;
}
}
return true;
}
int main(){
for(int i = 15;i >= 1;i--)
for(int j = 0;j < 10;j++)
cin >> g[i][j];
for(int i = 3;i >= 0;i--)
for(int j = 0;j < 4;j++)
cin >> s[i][j];
cin >> d;
for(int i = 0;i < 10;i++) g[0][i] = 1;
for(int k = 0;k < 15;k++)
if(!draw(k + 1)){
draw(k);
break;
}
for(int i = 15;i >= 1;i--){
for(int j = 0;j < 10;j++){
cout << p[i][j] << ' ';
}
cout << endl;
}
return 0;
}