NYOJ 10 skiing 【搜索】

本文分享了一道ACM竞赛中让人头疼的搜索题目解决过程。通过详细的代码展示,介绍了如何利用广度优先搜索(BFS)算法进行有效求解,并记录了作者从毫无头绪到最终AC的心路历程。

原题链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=10


这个题刚开始一点思路也没有,知道又是让人蛋疼的搜索,就是不知道该怎么搜。。表示很无奈。。。最好在教室上晚自习时去问问大兵。。终于有点眉目了。。于是昨天晚自习不上了,回来ac这个题。。一直a到10点 ,还没a上。⊙﹏⊙。。今天上午继续ac,最后才发现有个地方 初始化时候 搞错了。导致结果一直不对。浪费了我这么多的时间。让我情何以堪。。。( ⊙ o ⊙ )。。

#include<stdio.h> #include<string.h> #include<queue> using namespace std; int n,m; int ok[110][110]; int i[]={0,0,1,-1},j[]={1,-1,0,0}; struct sb { int x,y; int step; }; int bfs(int x1,int y1) { int a,b,c,d; queue<sb>q; sb yi={x1,y1,1}; q.push(yi); while(!q.empty()) { yi=q.front(); q.pop(); for(a=0;a<4;a++) { c=yi.x+i[a];//就是这里。。。以后要认真一点呀。。 d=yi.y+j[a]; if(ok[c][d]>0&&ok[c][d]<ok[yi.x][yi.y]) { sb yi1={c,d,yi.step+1}; q.push(yi1); } } } return yi.step; } int main() { int a,b,k,max,min; scanf("%d",&k); while(k--) { max=0; scanf("%d%d",&n,&m); memset(ok,-1,sizeof(ok)); for(a=1;a<=n;a++) for(b=1;b<=m;b++) scanf("%d",&ok[a][b]); for(a=1;a<=n;a++) for(b=1;b<=m;b++) { min=bfs(a,b); if(max<min) max=min; } printf("%d\n",max); } }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值