CSP题解|201512-2 消除类游戏|20分
#include <bits/stdc++.h> using namespace std; int main() { int n,m; cin>>n>>m; int arr[n][m]; bool del[n][m]={false}; for(int i =0;i<n;i++) for(int j =0;j<m;j++) cin>>arr[i][j]; //按行遍历数组 for(int i=0;i<n;i++){ for(int j =0;j<m-2;j++){ //发现三个一样的数 int tmp = arr[i][j]; if(arr[i][j] == arr[i][j+1] && arr[i][j] == arr[i][j+2] ){ del[i][j]=true; del[i][j+1]=true; del[i][j+2]=true; //继续往右找 while(j<m){ if(arr[i][j]==tmp){ del[i][j]=true; j++; }else{ j--; break; } } } } } for(int j =0;j<m;j++){ for(int i=0;i<n-2;i++){ //发现三个一样的数 int tmp = arr[i][j]; if(arr[i][j] == arr[i+1][j] && arr[i][j] == arr[i+2][j] ){ del[i][j]=true; del[i+1][j]=true; del[i+2][j]=true; //继续往下找 while(i<n){ if(arr[i][j]==tmp){ del[i][j]=true; i++; }else{ i--; break; } } } } } for(int i=0;i<n;i++){ for(int j =0;j<m;j++){ cout<<(del[i][j]?0:arr[i][j])<<" "; } cout<<endl; } }
感觉一点毛病都没,不知道为啥20分