3215499_ac_16ms_176k.cpp

来自「北大大牛代码 1240道题的原代码 超级权威」· C++ 代码 · 共 84 行

CPP
84
字号
#include <stdio.h>
#include <string.h>

int num[5];
char map[11][11];

int mov[][2] = {{0,1},{0,-1},{-1,0},{1,0},{1,1},{1,-1},{-1,-1},{-1,1}};
int cnt;

void flood_fill(int i,int j)
{
	int k;

	map[i][j] = '.';
	cnt++;
	for(k = 0; k < 4; k++)
	{
		if(map[i+mov[k][0]][j+mov[k][1]]=='1')
		{
			flood_fill(i+mov[k][0],j+mov[k][1]);
		}
	}
}

int main()
{
	int i, j, k, n;

	for(i = 1; i <= 10; i++)
	{
		scanf("%s",&map[i][1]);
	}
	for(i = 1; i <= 10; i++)
	{
		if(map[i][1]=='1'||map[i][10]=='1'||map[1][i]=='1'||map[10][i]=='1')
		{
			puts("incorrect");
			return 0;
		}
	}
	for(i = 2; i <= 9; i++)
	{
		for(j = 2; j <= 9; j++)
		{
			if(map[i][j]=='1')
			{
				for(k = 4; k < 8; k++)
				{
					if(map[i+mov[k][0]][j+mov[k][1]]=='1')
					{
						puts("incorrect");
						return 0;
					}
				}
			}
		}
	}
	n = 0;
	memset(num,0,sizeof(num));
	for(i = 2; i <= 9; i++)
	{
		for(j = 2; j <= 9; j++)
		{
			if(map[i][j]=='1')
			{
				cnt = 0;
				flood_fill(i,j);
				if(cnt > 4)
				{
					puts("incorrect");
					return 0;
				}
				num[cnt]++;
				n++;
			}
		}
	}
	if(n!=10||num[1]!=4||num[2]!=3||num[3]!=2||num[4]!=1)
		puts("incorrect");
	else
		puts("correct");
	return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?