社区讨论
WA求助,自己觉得思路真的没问题
P1506拯救oibh总部参与者 2已保存回复 3
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @lozl5so8
- 此快照首次捕获于
- 2023/11/15 17:54 2 年前
- 此快照最后确认于
- 2023/11/15 19:47 2 年前
CPP
#include <stdio.h>
int x, y;
int map[505][505];
char ch;
int answer = 0;
void check_safe(int a,int b)
{
map[a][b] = 1;
//深搜
if(map[a-1][b] == 0)
{
check_safe(a-1,b);
}
if(map[a][b-1] == 0)
{
check_safe(a,b-1);
}
if(map[a+1][b] == 0)
{
check_safe(a+1,b);
}
if(map[a][b+1] == 0)
{
check_safe(a,b+1);
}
return;
}
void get_answer(int a,int b)
{
if((a == 1 || a == x || b == 1 || b == y) && map[a][b] == 0)
check_safe(a,b);
return;
}
int main()
{
scanf("%d%d",&x,&y);
for(int i = 0;i <= y+1;i++)
{
map[0][i] = 1;
map[x + 1][i] = 1;
}
for(int i = 0;i <= x+1;i++)
{
map[i][0] = 1;
map[i][y + 1] = 1;
}
for(int i = 1;i <= x;i++)
{
for(int j = 1;j <= y;j++)
{
scanf("%c",&ch);
if(ch == '0')
map[i][j] = 0;
if(ch == '*')
map[i][j] = 1;
if(ch == '\n')
j--;
}
}
for(int i = 1;i <= x;i++)
{
get_answer(i, 1);
get_answer(i, y);
}
for(int i = 1;i <= y;i++)
{
get_answer(1, i);
get_answer(x, i);
}
for(int i = 1;i <= x;i++)
{
for(int j = 1;j <= y;j++)
{
if(map[i][j] == 0)
answer++;
}
}
printf("%d",answer);
return 0;
}
回复
共 3 条回复,欢迎继续交流。
正在加载回复...