[DFS]FJSDFZOJ 1427 寻找国都名
来源:互联网 发布:虚拟网络电话软件 编辑:程序博客网 时间:2024/04/27 17:30
原题:http://218.5.5.242:9018/JudgeOnline/problem.php?id=1427
时间:2014.2.3
类型:回溯,dfs
源码:
#include<iostream>#include<cstdio>#include<string>using namespace std;int m,n,d[11],beginh,beginl;char map[11][11];string ob;bool ans=false,first=true;void search(int i,int j,int s,int num){if(num==ob.size()) { ans=true; }if(ans) { return; }switch(s){case 0:beginh=i;beginl=j;if(j+1<=n) { search(i,j+1,1,num+1); }if(j-1>=1) { search(i,j-1,2,num+1); }if(i+1<=m) { search(i+1,j,3,num+1); }if(i-1>=1) { search(i-1,j,4,num+1); }if(j-1>=1&&i+1<=m) { search(i+1,j-1,5,num+1); }if(j+1<=n&&i-1>=1) { search(i-1,j+1,6,num+1); }if(j+1<=n&&i+1<=m) { search(i+1,j+1,7,num+1); }if(j-1>=1&&i-1>=1) { search(i-1,j-1,8,num+1); }break;case 1:if(ob[num]==map[i][j]){d[num]=s;if(j+1<=n) { search(i,j+1,1,num+1); } if(j-1>=1) { search(i,j-1,2,num+1); } if(i+1<=m) { search(i+1,j,3,num+1); }if(i-1>=1) { search(i-1,j,4,num+1); }if(j-1>=1&&i+1<=m) { search(i+1,j-1,5,num+1); }if(j+1<=n&&i-1>=1) { search(i-1,j+1,6,num+1); }if(j+1<=n&&i+1<=m) { search(i+1,j+1,7,num+1); }if(j-1>=1&&i-1>=1) { search(i-1,j-1,8,num+1); }break;}case 2:if(ob[num]==map[i][j]){d[num]=s;if(j+1<=n) { search(i,j+1,1,num+1); } if(j-1>=1) { search(i,j-1,2,num+1); } if(i+1<=m) { search(i+1,j,3,num+1); }if(i-1>=1) { search(i-1,j,4,num+1); }if(j-1>=1&&i+1<=m) { search(i+1,j-1,5,num+1); }if(j+1<=n&&i-1>=1) { search(i-1,j+1,6,num+1); }if(j+1<=n&&i+1<=m) { search(i+1,j+1,7,num+1); }if(j-1>=1&&i-1>=1) { search(i-1,j-1,8,num+1); }break;}case 3:if(ob[num]==map[i][j]){d[num]=s;if(j+1<=n) { search(i,j+1,1,num+1); } if(j-1>=1) { search(i,j-1,2,num+1); } if(i+1<=m) { search(i+1,j,3,num+1); }if(i-1>=1) { search(i-1,j,4,num+1); }if(j-1>=1&&i+1<=m) { search(i+1,j-1,5,num+1); }if(j+1<=n&&i-1>=1) { search(i-1,j+1,6,num+1); }if(j+1<=n&&i+1<=m) { search(i+1,j+1,7,num+1); }if(j-1>=1&&i-1>=1) { search(i-1,j-1,8,num+1); }break;}case 4:if(ob[num]==map[i][j]){d[num]=s;if(j+1<=n) { search(i,j+1,1,num+1); } if(j-1>=1) { search(i,j-1,2,num+1); } if(i+1<=m) { search(i+1,j,3,num+1); }if(i-1>=1) { search(i-1,j,4,num+1); }if(j-1>=1&&i+1<=m) { search(i+1,j-1,5,num+1); }if(j+1<=n&&i-1>=1) { search(i-1,j+1,6,num+1); }if(j+1<=n&&i+1<=m) { search(i+1,j+1,7,num+1); }if(j-1>=1&&i-1>=1) { search(i-1,j-1,8,num+1); }break;}case 5:if(ob[num]==map[i][j]){d[num]=s;if(j+1<=n) { search(i,j+1,1,num+1); } if(j-1>=1) { search(i,j-1,2,num+1); } if(i+1<=m) { search(i+1,j,3,num+1); }if(i-1>=1) { search(i-1,j,4,num+1); }if(j-1>=1&&i+1<=m) { search(i+1,j-1,5,num+1); }if(j+1<=n&&i-1>=1) { search(i-1,j+1,6,num+1); }if(j+1<=n&&i+1<=m) { search(i+1,j+1,7,num+1); }if(j-1>=1&&i-1>=1) { search(i-1,j-1,8,num+1); }break;}case 6:if(ob[num]==map[i][j]){d[num]=s;if(j+1<=n) { search(i,j+1,1,num+1); } if(j-1>=1) { search(i,j-1,2,num+1); } if(i+1<=m) { search(i+1,j,3,num+1); }if(i-1>=1) { search(i-1,j,4,num+1); }if(j-1>=1&&i+1<=m) { search(i+1,j-1,5,num+1); }if(j+1<=n&&i-1>=1) { search(i-1,j+1,6,num+1); }if(j+1<=n&&i+1<=m) { search(i+1,j+1,7,num+1); }if(j-1>=1&&i-1>=1) { search(i-1,j-1,8,num+1); }break;}case 7:if(ob[num]==map[i][j]){d[num]=s;if(j+1<=n) { search(i,j+1,1,num+1); } if(j-1>=1) { search(i,j-1,2,num+1); } if(i+1<=m) { search(i+1,j,3,num+1); }if(i-1>=1) { search(i-1,j,4,num+1); }if(j-1>=1&&i+1<=m) { search(i+1,j-1,5,num+1); }if(j+1<=n&&i-1>=1) { search(i-1,j+1,6,num+1); }if(j+1<=n&&i+1<=m) { search(i+1,j+1,7,num+1); }if(j-1>=1&&i-1>=1) { search(i-1,j-1,8,num+1); }break;}case 8:if(ob[num]==map[i][j]){d[num]=s;if(j+1<=n) { search(i,j+1,1,num+1); } if(j-1>=1) { search(i,j-1,2,num+1); } if(i+1<=m) { search(i+1,j,3,num+1); }if(i-1>=1) { search(i-1,j,4,num+1); }if(j-1>=1&&i+1<=m) { search(i+1,j-1,5,num+1); }if(j+1<=n&&i-1>=1) { search(i-1,j+1,6,num+1); }if(j+1<=n&&i+1<=m) { search(i+1,j+1,7,num+1); }if(j-1>=1&&i-1>=1) { search(i-1,j-1,8,num+1); }break;}}}int main(){cin>>m>>n;for(int i=1;i<=m;i++){for(int j=1;j<=n;j++){cin>>map[i][j];}}cin>>ob;for(int i=1;i<=m;i++){for(int j=1;j<=n;j++){if(ob[0]==map[i][j]) search(i,j,0,0);}}if(ans){cout<<beginh<<" "<<beginl<<endl;for(int i=1;i<=ob.size()-1;i++) { cout<<d[i]; }}else cout<<"No Answer!";return 0;}
最后状态:AC
总结:写的不怎么样,167行...
0 0
- [DFS]FJSDFZOJ 1427 寻找国都名
- [DFS]FJSDFZOJ 1412 四色问题
- [DFS]FJSDFZOJ 1260 城市交通
- 寻找泰国 遇见不一样的国都
- [DFS]FJSDFZOJ 1261 整数拆分
- [DFS]FJSDFZOJ 1423 n皇后
- [DFS]FJSDFZOJ 1421 数字排列问题
- [DFS]FJSDFZOJ 1420 0/1背包问题
- [DFS]FJSDFZOJ 1079/NOIP2002 选数
- DFS寻找路径~
- 【noip】寻找道路 DFS SPFA
- NOIP2014 寻找道路 (DFS)
- FJSDFZOJ 1109 统计数字
- 迷宫问题(八个方向寻找)DFS
- 【uoj】#19 寻找道路 dfs+bfs(SPFA)
- vijos1909 寻找道路 [SPFA][dfs][bfs]
- 洛谷 2296_寻找道路_spfa+dfs
- 飞越原野 DFS寻找最优路径
- UVa:471 Magic Numbers
- 哎~老是忘发博客
- Linux下安装vnstat流量统计
- uva 11374
- Let the Balloon Rise
- [DFS]FJSDFZOJ 1427 寻找国都名
- 深入了解View实现原理以及自定义View详解
- hdu 2825 ac自动机+状态压缩dp
- Elevator
- LIVE555
- ubuntu12.04关闭独立显卡,解决风扇转得很快的方法
- Codeforces 384B Multitasking(贪心)
- SQL 新增表
- 使用PIE对IE进行CSS3兼容介绍和经验总结