您的位置:首页 > 其它

ccf 消除类游戏

2016-09-11 19:44 274 查看
#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;
}//将横向的消除,再将纵向的消除,合并即可
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: