迷宫搜索变型——【USACO5.2.1】蜗牛的旅行
2011-03-23 16:03
337 查看
无限RE后,换了个oj提交,AC了
DFS搜索的关键是,找到下一步的方向,与准确的回朔
View Code
DFS搜索的关键是,找到下一步的方向,与准确的回朔
View Code
#include<stdio.h> int map[129][129]; int Max,n; int f[4][2]={{0,-1},{-1,0},{0,1},{1,0}}; void dfs(int a,int b,int step) { if(step>Max) Max=step; int sa,sb,i,j; for(i=0;i<=3;i++) { sa=a+f[i][0]; sb=b+f[i][1]; int ta=sa,tb=sb,sstep=step; if(ta>n||ta<1||tb>n||tb<1)continue; if(map[ta][tb]!=0)continue; int add=0; sstep++; while(ta<=n&&ta>=1&&tb<=n&&tb>=1&&map[ta][tb]==0) { map[ta][tb]=1; ta+=f[i][0]; tb+=f[i][1]; add++; sstep++; } if(ta<=n&&ta>=1&&tb<=n&&tb>=1&&map[ta][tb]==1)//遇到自己结束 { sstep--; if(sstep>Max) Max=sstep; for(j=0;j<add;j++) { ta-=f[i][0]; tb-=f[i][1]; map[ta][tb]=0; } continue; } ta-=f[i][0]; tb-=f[i][1]; sstep--; add--;//退一步,这里走才是合法路 dfs(ta,tb,sstep); for(j=0;j<=add;j++) { map[ta][tb]=0; ta-=f[i][0]; tb-=f[i][1]; } } } int main() { int m; while(scanf("%d%d",&n,&m)!=EOF) { int i,j,t; char s; for(i=1;i<=n;i++) { for(j=1;j<=n;j++) { map[i][j]=0; } } for(i=1;i<=m;i++) { getchar(); scanf("%c%d",&s,&t); int temp=s-'A'+1; map[t][temp]=2; } Max=0; map[1][1]=1; dfs(1,1,1); printf("%d\n",Max); } return 0; }
相关文章推荐
- 【题目】[USACO5.2]蜗牛的旅行Snail Trails
- JZOJ1315.【USACO题库】5.2.1 Snail Trails蜗牛的旅行
- 【USACO题库】5.2.1 Snail Trails蜗牛的旅行
- 【USACO题库】5.2.1 Snail Trails蜗牛的旅行
- 迷宫问题求解之“A*搜索”(二)
- 杭电1242-搜索专题&&迷宫问题
- 折半搜索+状态压缩【P3067】 [USACO12OPEN]平衡的奶牛群Balanced Cow S…
- poj3083 dfs+bfs搜索迷宫
- MUTC 1 E - Saving Princess claire_ 迷宫搜索
- USACO中的搜索
- HDU/HDOJ 1242 Rescue 典型的迷宫广度优先搜索题
- USACO Section 1.4 Mother's Milk 搜索
- POJ3984迷宫问题(搜索)
- poj 3984 迷宫问题 BFS 图的广度优先搜索
- [kuangbin]专题一 简单搜索 K - 迷宫问题 POJ - 3984
- 搜索专题(DFS&&BFS&&剪枝)HDU 1728-逃离迷宫
- USACO6.4-Wisconsin Squares:搜索
- 用广度优先搜索解迷宫问题 By LYLtim
- NYOJ306 走迷宫(dfs+二分搜索)
- 迷宫问题—简单深度搜索