消消乐
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
*/
三相连,消除。
*/
#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
*/
相关文章推荐
- PS等难卸载软件的通用强制卸载方法、安装程序检测到计算机重新启动...问题、安装失败问题
- HTML标签学习
- 狄克斯特拉算法求解村庄问题
- 适配器模式
- C++—STL学习笔记
- 文章标题
- 随笔
- leetcode之Spiral Matrix II
- 火焰艺术字效果制作
- Spring Boot学习笔记-外部化属性配置
- 读OpenCV之小侃高斯滤波
- [PTA] week12 4-10 Strongly Connected Components
- 一道闭包题题解
- 图像处理与计算机视觉:基础,经典以及最近发展(5)计算机视觉
- CABasicAnimation animationWithKeyPath Types
- 初识JavaScript,Ajax,jQuery,并比较三者关系
- 应用层open(read、write、close)怎样调用驱动open(read、write、close)函数的?
- 黑马程序员——java基础之多态
- JAVA反射与代理
- Container With Most Water