首页 > 代码库 > 2016年CCF第七次测试 俄罗斯方块
2016年CCF第七次测试 俄罗斯方块
1 //2016年CCF第七次测试 俄罗斯方块 2 // 这道小模拟题还是不错 3 // 思路:处理出输入矩阵中含1格子的行数和列数 4 // 再判是否有一个格子碰到底部,否则整体再往下移动一步,如果有一个格子不能移动,要返回到前一步 5 6 #include <bits/stdc++.h> 7 using namespace std; 8 #define LL long long 9 const double inf = 123456789012345.0;10 const LL MOD =100000000LL;11 const int N =1e7+10;12 #define clc(a,b) memset(a,b,sizeof(a))13 const double eps = 1e-7;14 void fre() {freopen("in.txt","r",stdin);}15 void freout() {freopen("out.txt","w",stdout);}16 inline int read() {int x=0,f=1;char ch=getchar();while(ch>‘9‘||ch<‘0‘) {if(ch==‘-‘) f=-1; ch=getchar();}while(ch>=‘0‘&&ch<=‘9‘) {x=x*10+ch-‘0‘;ch=getchar();}return x*f;}17 18 int g[15][15],p[5][5];19 int x[5],y[5];20 int main(){21 // fre();22 for(int i=0;i<15;i++){23 for(int j=0;j<10;j++){24 scanf("%d",&g[i][j]);25 }26 }27 int b;28 for(int i=0;i<4;i++){29 for(int j=0;j<4;j++){30 scanf("%d",&p[i][j]);31 }32 }33 int k=0;34 scanf("%d",&b);35 for(int i=0;i<4;i++){36 for(int j=0;j<4;j++){37 if(p[i][j]==1){38 x[k]=i;39 y[k++]=j+b-1;40 }41 }42 }43 int step=0;44 int count=0;45 bool flag=true,flag2=true;46 while(flag){47 for(int i=0;i<4;i++){48 if(x[i]+step==14){49 for(int j=0;j<4;j++){50 g[x[j]+step][y[j]]=1;51 }52 flag2=false;53 break;54 }55 if(g[x[i]+step][y[i]]==0){56 count++;57 }58 }59 if(flag2==false) break;60 if(count==4){61 step++;62 count=0;63 }64 else{65 for(int i=0;i<4;i++){66 g[x[i]+step-1][y[i]]=1;67 }68 flag=false;69 }70 }71 for(int i=0;i<15;i++){72 for(int j=0;j<10;j++){73 printf("%d ",g[i][j]);74 }75 printf("\n");76 }77 return 0;78 }
2016年CCF第七次测试 俄罗斯方块
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。