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分

全部评论

相关推荐

像好涩一样好学:这公司我也拿过 基本明确周六加班 工资还凑活 另外下次镜头往上点儿
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务