九度 1091 棋盘游戏
2012-02-07 16:40
127 查看
http://ac.jobdu.com/problem.php?id=1091
牢记师姐的话~
基本DFS,一开始越界了,搜索了好长时间,后来检查是内存越界了,不过奇怪,怎么没提示啥呢
把方向存数组里,代码可以更短的。还有,某些人喜欢COPY别人的代码,不是好习惯,不管他了。
牢记师姐的话~
基本DFS,一开始越界了,搜索了好长时间,后来检查是内存越界了,不过奇怪,怎么没提示啥呢
把方向存数组里,代码可以更短的。还有,某些人喜欢COPY别人的代码,不是好习惯,不管他了。
#include <stdio.h> #define INF 0x7fffffff int cost_array[8][8]; int n; int start_x,start_y,end_x,end_y; int fin_cost=INF; bool available(int x,int y) { if(!(x>=1&&x<=6&&y>=1&&y<=6)) return false; if(cost_array[x][y]==0) return false; return true; } void DFS(int x,int y,int cur_cost,int cur_stat) { if(x==end_x&&y==end_y){ if(cur_cost<fin_cost){ fin_cost=cur_cost; } return ; } if(cur_cost>fin_cost){ return ; } int temp; if(available(x,y+1)){ temp=cost_array[x][y+1]; cost_array[x][y+1]=0; DFS(x,y+1,cur_cost+temp*cur_stat,(temp*cur_stat)%4+1); cost_array[x][y+1]=temp; } if(available(x,y-1)){ temp=cost_array[x][y-1]; cost_array[x][y-1]=0; DFS(x,y-1,cur_cost+temp*cur_stat,(temp*cur_stat)%4+1); cost_array[x][y-1]=temp; } if(available(x-1,y)){ temp=cost_array[x-1][y]; cost_array[x-1][y]=0; DFS(x-1,y,cur_cost+temp*cur_stat,(temp*cur_stat)%4+1); cost_array[x-1][y]=temp; } if(available(x+1,y)){ temp=cost_array[x+1][y]; cost_array[x+1][y]=0; DFS(x+1,y,cur_cost+temp*cur_stat,(temp*cur_stat)%4+1); cost_array[x+1][y]=temp; } } int main() { while(scanf("%d",&n)!=EOF){ while(n--){ fin_cost=INF; int i,j; for(i=1;i<=6;i++){ for(j=1;j<=6;j++){ scanf("%d",&cost_array[i][j]); } } scanf("%d%d%d%d",&start_x,&start_y,&end_x,&end_y); start_x++; start_y++; end_x++; end_y++; DFS(start_x,start_y,0,1);//cur_x,cur_y,cur_cost,cor_stat; printf("%d\n",fin_cost); } } }
相关文章推荐
- 九度[1091]-棋盘游戏
- 九度题目1091:棋盘游戏
- 题目1091:棋盘游戏
- 九度OJ 1091棋盘游戏
- 九度 oj 题目1091:棋盘游戏
- 九度OJ 1091 棋盘游戏
- 1091_棋盘游戏
- 九度OJ 1091 棋盘游戏
- DFS和BFS 解棋盘游戏(九度OJ 1091)
- 九度OJ(1091)棋盘游戏
- 【王道九度OJ】1043 day of week
- 九度oj-1014-排名
- 九度oj-1028-继续畅通工程
- 九度oj-1019-简单计算器
- 九度题目1015:还是A+B
- 九度_题目1362:左旋转字符串(Move!Move!!Move!!!)
- 九度 1384 二维数组中的查找
- 九度oj-1163-素数
- 九度 题目1421:Abor
- 九度 题目1017:还是畅通工程