您的位置:首页 > 其它

消消乐

2016-01-02 20:59 267 查看
/*

三相连,消除。

*/

#include <stdio.h>
#include <memory.h>

#define N 31

int a

;
int b

;

void eliminate(int n, int m)
{
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
int num=1;
if(num<3 && j+1<m && a[i][j]==a[i][j+1]) {
num++;
if(num<3 && j+2<m && a[i][j]==a[i][j+2]) num++;
}

if(num<3 && j-1>=0 && a[i][j]==a[i][j-1]) {
num++;
if(num<3 && j-2>=0 && a[i][j]==a[i][j-2]) num++;
}

if(num<3) {
num=1;
if(num<3 && i+1<n && a[i][j]==a[i+1][j]) {
num++;
if(num<3 && i+2<n && a[i][j]==a[i+2][j]) num++;
}

if(num<3 && i-1>=0 && a[i][j]==a[i-1][j]) {
num++;
if(num<3 && i-2>=0 && a[i][j]==a[i-2][j]) num++;
}
}

if(num==3) b[i][j]=0;
}
}
}
void print(int n, int m)
{
for(int i=0;i<n;i++)
{
int t;
t=0;
if(b[i][0]) t=a[i][0];
printf("%d",t);
for(int j=1;j<m;j++)
{
t=0;
if(b[i][j]) t=a[i][j];
printf(" %d",t);
}
printf("\n");
}
}

int main()
{
int n,m;
while(scanf("%d%d",&n,&m)!=EOF) {
memset(a,0,N*N);
memset(b,1,N*N);
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
scanf("%d",&a[i][j]);
}
}
eliminate(n,m);
printf("\n");
print(n,m);
printf("\n\n");
}
return 0;
}

/*
3 3
1 2 1
2 2 2
1 2 1

4 4
1 1 1 1
2 1 1 2
2 1 1 2
1 1 1 1

*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: