社区讨论

WA求助

P1162填涂颜色参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@lr61utb4
此快照首次捕获于
2024/01/09 15:48
2 年前
此快照最后确认于
2024/01/09 20:24
2 年前
查看原帖
CPP
#include <stdio.h>
int n;
int map[35][35];

void ranse()
{
	for(int i = 1;i <= n;i++)
	{
		for(int j = 1;j <= n;j++)
		{
			if(map[i][j] == 0)
			{
				map[i][j] = 2;
			}
			else if(map[i][j] == -1)
			{
				map[i][j] = 0;
			}
			printf("%d ", map[i][j]);
		}
		printf("\n");
	}
}

void solu(int x, int y)
{
	if(y > n)
	{
		solu(x + 1, 1);
		return;
	}
	else if(x > n)
	{
		return;
	}
	if(map[x][y] == 1)
	{
		solu(x, y + 1);
		return;
	}
	else if(map[x][y] == -1)
	{
		solu(x, y + 1);
		return;
	}
	else if(map[x + 1][y] == -1 || map[x - 1][y] == -1 || map[x][y + 1] == -1 || map[x][y - 1] == -1)
	{
		map[x][y] = -1;
		solu(x, y + 1);
		return;
	}
	else
	{
		solu(x, y + 1);
		return;
	}
	return;
}

int main()
{
	scanf("%d", &n);
	for(int i = 0;i <= 32;i++)
	{
		for(int j = 0;j <= 32;j++)
		{
			map[i][j] = -1; 
		}
	}
	for(int i = 1;i <= n;i++)
	{
		for(int j = 1;j <= n;j++)
		{
			scanf("%d", &map[i][j]);
		}
	}
	
	solu(1, 1);
	
	ranse();
	//思路大概是从边界检查,-1向内渗透,遇到0将0转化为-1,直到没有符合条件的0为止,然后将剩下的0转为2,将染成的-1变回0输出
	return 0;
} 

回复

0 条回复,欢迎继续交流。

正在加载回复...