nyoj 1100 WAJUEJI which home strong!
2015-08-18 08:54
531 查看
WAJUEJIwhichhomestrong!
时间限制:1000ms|内存限制:65535KB难度:2描述在一个山沟里,姐弟俩同时考上了大学。但由于家里拮据,所以这并不是什么好消息。父亲对孩子说:我就是砸锅卖铁也要把你们姐俩供出来。当时的姐姐已经决定放弃上学的机会。没想到第二天天还没亮,弟弟就偷偷带著几件破衣服和几个乾巴馒头走了,在姐姐枕边留下一个纸条:姐,你别愁了,考上大学不容易,我出去打工供你。弟。姐姐握著那张字条,趴在炕上,失声痛哭。那一年,弟弟17岁,姐姐20岁。姐姐用父亲满村子借的钱和弟弟在工地裏搬水泥挣的钱终於读到了大三。一天姐姐正在寝室里看书,同学跑进来对姐姐说,有个老乡在找你。姐姐很纳闷,走出去后,远远地看见弟弟,穿著满身是水泥和沙子的工作服。姐姐说,你怎么和我同学说你是我老乡啊?他笑著说,你看我穿的这样,说是你弟,你同学还不笑话你?姐姐鼻子一酸,眼泪就落了下来。弟弟赶忙为姐姐擦掉眼泪,说:姐,你别哭,我这次来是想让你帮我打听一下,学挖掘机哪家强?在你的帮助下,弟弟踏上了去蓝翔的路。那么问题就来了。3 35 #sVGF A##ZA lCDBC 33 sAB ABS ABl 33 s#B ### ABl样例输出
48 4 -1
bfs:
代码1:
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<queue>#include<algorithm>usingnamespacestd;structrecord{intx,y,money;friendbooloperator<(recorda,recordb)//优先队列;{returna.money>b.money;}};intvis[110][110];charmap[110][110];intn,m,x1,y1;intdx[4]={0,0,-1,1};//四个方向;intdy[4]={-1,1,0,0};priority_queue<record>q;voidbfs(){inti;recorde,t;memset(vis,0,sizeof(vis));while(!q.empty())//清空队列;{q.pop();}vis[x1][y1]=1;e.x=x1;e.y=y1;e.money=0;q.push(e);while(!q.empty()){e=q.top();q.pop();for(i=0;i<4;i++){t=e;t.x+=dx[i];t.y+=dy[i];if(t.x>=0&&t.x<n&&t.y>=0&&t.y<m&&!vis[t.x][t.y]&&map[t.x][t.y]!='#'){if(map[t.x][t.y]=='l')//到达l输出;{printf("%d\n",t.money);return;}t.money=e.money+map[t.x][t.y]-'A'+1;//未到达l,说明在A--Z上行走;vis[t.x][t.y]=1;q.push(t);}}}printf("-1\n");}intmain(){intt,i,j;scanf("%d",&t);while(t--){scanf("%d%d",&n,&m);for(i=0;i<n;i++){scanf("%s",map[i]);}for(i=0;i<n;i++){for(j=0;j<m;j++){if(map[i][j]=='s')//记录初始坐标;{x1=i;y1=j;}}}bfs();}return0;}代码2:
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<queue>#include<algorithm>usingnamespacestd;structrecord{intx,y,money;friendbooloperator<(recorda,recordb){returna.money>b.money;}};intvis[110][110];charmap[110][110];intn,m,x1,y1;intdx[4]={0,0,-1,1};intdy[4]={-1,1,0,0};voidbfs(){inti;recorde,t;priority_queue<record>q;memset(vis,0,sizeof(vis));while(!q.empty())q.pop();vis[x1][y1]=1;e.x=x1;e.y=y1;e.money=0;q.push(e);while(!q.empty()){e=q.top();q.pop();if(map[e.x][e.y]=='l')//遇到l时输出;{printf("%d\n",e.money);return;}for(i=0;i<4;i++){t=e;t.x+=dx[i];t.y+=dy[i];if(t.x>=0&&t.x<n&&t.y>=0&&t.y<m&&!vis[t.x][t.y]&&map[t.x][t.y]!='#'){if(map[t.x][t.y]>='A'&&map[t.x][t.y]<='Z')t.money=e.money+map[t.x][t.y]-'A'+1;elset.money=e.money;vis[t.x][t.y]=1;q.push(t);}}}printf("-1\n");}intmain(){intt,i,j;scanf("%d",&t);while(t--){scanf("%d%d",&n,&m);for(i=0;i<n;i++)scanf("%s",map[i]);for(i=0;i<n;i++){for(j=0;j<m;j++){if(map[i][j]=='s'){x1=i;y1=j;}}}bfs();}return0;}
相关文章推荐
- UI导航控制器-----连载七
- Implementing Queue using Stacks
- Implementing Stacks Using Queues
- KVC中setValuesForKeysWithDictionary:
- UIImage尺寸调节
- UIActivityIndicatorView的详细使用
- Codeforces Round #316 (Div. 2) D. Tree Requests 树 离线在线 算法
- Round #313 (Div. 2) D. Equivalent Strings-大水题递归
- SPOJ-QTREE2 Query on a tree II(暴力+LCA)
- 为什么GUI框架都使用单线程
- OC学习笔记21--OC中集合类的读写文件操作及NSData与NSValue
- suid验证
- 纯UILabel实现文字的竖排显示 记录
- Codeforces Gym 100431G Persistent Queue 可持久化队列
- 自己用反射写的一个request.getParameter工具类
- iOS UI基础-1.0加法计算器
- request.startAsync()不支持异步操作
- codeforces Gym 100431G Persistent Queue
- DNASequence
- Java集合(14)--双枢轴快速排序(DualPivotQuicksort)