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分
