概述
链接:https://vjudge.net/contest/211072#problem/D
我记得以前做过.... 然后理所当然地刽= =
带这个标点怕是没法写文档了
油田dfs的题
把四周【四周】方向*8 的都去访问一遍
可以用for(-1 1)
for(-1 1)
*z转移 i不变 j
dp[i][j]
首先判断遇到@ 才去进行访问
其次在访问的时候 如果在八个方向上遇到@ 就把它标记成为*
(adds 去搜索一下它的八方 八方都回来 都消除印记遍布满了才哦几百块)
如果访问的时候就是* 直接退出 进行下一个访问
dp里和dp外都是这样
最后给个sum就好了...对那些 还没有被苟延残喘吞并了的= =
【结果!!!!!结果你都不知道发生了什么】
我竟然错错错错错错是我的错]
【我竟然错了一个小时才对。。。我的妈呀】
【好吧这是第一次手打之后ac的(糊脸)以前手打了WA TE什么的】
【明明是个很简单的题啊!!!!!!】
【那么我们来看问题出在了哪里】
附上代码:
需要注意的:
(一)、
死在这里了...(死numade)
x += i;
y += j;
dfs(x+i,y+j)
一个是x=x+i y=y+j
一个是x+i y+j
就比如对(0,0)的遍历啊.... 不同的i j都换一遍
但是如果x的值被改变了
那 0先加上-1 又+0 又加1
最后他dfs的是y-1 y-1 y 对不对。千万要当心....
(二)、
下标问题,因为学长讲的时候貌似讲到这个……混了混了
就是 i是从1开始还是0开始,然后对应到,判断边界的时候是等于还是小于/巴拉巴拉
不复杂 但是要分清楚
但是要分清楚
就比如,for(i=1;;....)
scanf("%s",maze[i]+1);
字符串是下标啊(大概)然后char还是什么这种东西其实是有char指针的
这样写的话,没有用& ,但是数组里面是从首地址(0)之后的一个地址开始的(1) fine
然后dfs内部其实不用怕,还是用哪个-1到1 的可以,因为这里不是坐标而是表示的在它的八个方向
(三)、
if (s[x][y] == '@')
{
s[x][y] ='*';
其实是一点小错误...就是那个分号写在哪里
经常会犯,for循环和其他
for循环啊for循大于环一句话括号啊括号
#include<stdio.h>
#include<string.h>
#include<iostream>
using namespace std;
int m, n;
char s[120][120];
void dfs(int x, int y){
if (x < 0 || y<0 || x == m || y == n)
return;
if (s[x][y] == '@')
{
s[x][y] ='*';****************************
//{
for (int i = -1; i <= 1;i++)
{
for (int j = -1; j <= 1;j++)
{
// x += i;
//y += j;
dfs(x+i,y+j);//【变量变在这里啊啊啊啊】
}
}
}
/*
for (int i = 0; i<m; i++)
{
for (int j = 0; j<n; j++)
{
cout << s[i][j];
}
cout << endl;
}*/
// else return
//5 5 ****@ *@@*@ *@**@ @@@*@ @@**@
//cout << endl;
}
int main()
{
int i, j, k;
while (scanf_s("%d%d", &m, &n) != EOF)
{
if (m == 0 && n == 0)
break;
memset(s, 0, sizeof(s));
for (i = 0; i <m; i++)
for (j = 0; j < n;j++)
cin >> s[i][j];
//scanf("%s", s[i]+1);
int sum = 0;
for (i = 0; i<m; i++)
{
for (j = 0; j<n; j++)
{
if (s[i][j] == '@')
{
sum++;//记录搜索次数
dfs(i, j);
}
}
}
printf("%dn", sum);
}
return 0;
}
****最后能怎么实现怕是又是另外一回事儿了
10分钟 600字妥妥的啊 1000都没问题(
最后
以上就是独特自行车为你收集整理的UVa 572 - Oil Deposits(油田 dfs) 错的离谱的我的全部内容,希望文章能够帮你解决UVa 572 - Oil Deposits(油田 dfs) 错的离谱的我所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复