ccf 消除類遊戲
阿新 • • 發佈:2018-11-20
#include<iostream> #include<cstring> #include<cstdio> #include<algorithm> using namespace std; int main(){ int a[35][35],b[35][35]; int n,m; scanf("%d%d",&n,&m); for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ scanf("%d",&a[i][j]); b[i][j]=a[i][j]; } } for(int i=0;i<n;i++){ int count=0,j; for(j=0;j<m-1;j++){ if(a[i][j]==a[i][j+1]){ count++; } else{ if(count>=2){ int tmp=j; count+=1; while(count--){ a[i][tmp]=0; tmp--; } } count=0; } } if(count>=2){ int tmp=j; count+=1; while(count--){ a[i][tmp]=0; tmp--; } } } for(int j=0;j<m;j++){ int count=0,i; for(i=0;i<n-1;i++){ if(b[i][j]==b[i+1][j]){ count++; } else{ if(count>=2){ int tmp=i; count+=1; while(count--){ b[tmp][j]=0; tmp--; } } count=0; } } if(count>=2){ int tmp=i; count+=1; while(count--){ b[tmp][j]=0; tmp--; } } } for(int i=0;i<n;i++){ if(b[i][0]==0) printf("%d",b[i][0]); else printf("%d",a[i][0]); for(int j=1;j<m;j++){ if(b[i][j]==0) printf(" %d",b[i][j]); else printf(" %d",a[i][j]); } printf("\n"); } return 0; }//將橫向的消除,再將縱向的消除,合併即可