走迷宫 (2010-12-11 08:54)
来源:互联网 发布:java动态添加定时任务 编辑:程序博客网 时间:2024/06/03 17:38
题目网址:http://acm.hdu.edu.cn/showproblem.php?pid=1072
测试输入:
33 32 1 11 1 01 1 34 82 1 1 0 1 1 1 01 0 4 1 1 0 4 11 0 0 0 0 0 0 11 1 1 4 1 1 1 35 81 2 1 1 1 1 1 4 1 0 0 0 1 0 0 1 1 4 1 0 1 1 0 1 1 0 0 0 0 3 0 1 1 1 4 1 1 1 1 1
测试输出:
4
-1
13
最后一个测试数据走到4向右走没走通,然后回朔,但是多把走4的那两步回掉了,高手帮忙看下~~~~~
#include<stdio.h>
#define N 8
int juzhen[N+2][N+2],flag,temp,time,sum;
int k[4][2]={0,1,1,0,0,-1,-1,0};
void fun(int row,int col)
{
int i,j;
/* for(i=0;i<=N+1;i++){
for(j=0;j<=N+1;j++){
printf("%d ",juzhen[i][j]);
}
printf("\n");
}
printf("没输出 row=%d col=%d time=%d sum=%d flag=%d\n",row,col,time,sum,flag); printf("%d \n",juzhen[row][col]); printf("\n");
*/ if(flag) return;
if(juzhen[row][col]==3 && time>=0){
flag=1; return ;
}
if(juzhen[row][col]==4 && time>=1){
time=6;
}
for(i=0;i<=3;i++){
if(juzhen[row+k[i][0]][col+k[i][1]]!=0){
time--;
if(time==0){time++;return ;}
sum++ ;
juzhen[row][col]=0;
fun(row+k[i][0],col+k[i][1]);
if(!flag){
time++;sum--;juzhen[row+k[i][0]][col+k[i][1]]=1;
}else if(time<=0){
flag=0;
time++;sum--;juzhen[row+k[i][0]][col+k[i][1]]=1;
}else{
return ;
}
}
}
}
int main()
{
int i,j,n,m,T,si,sj;
scanf("%d",&T);
while(T--){
flag=0;temp=0;time=6;sum=0;
scanf("%d%d",&n,&m);
for(i=0;i<=n+1;i++){
for(j=0;j<=m+1;j++){
if(i==0 || j==0 || i==n+1 || j==m+1){
juzhen[i][j]=0;
}
else{
scanf("%d",&juzhen[i][j]);
}
if(juzhen[i][j]==2){
si=i;sj=j;
}
}
}
fun(si,sj);
if(flag){
printf("%d\n",sum);
}
else{
printf("-1\n");
}
}
return 0;
}
- 走迷宫 (2010-12-11 08:54)
- 走迷宫
- 走迷宫
- 走迷宫
- 走迷宫
- 走迷宫
- 走迷宫
- 走迷宫
- 走迷宫
- 走迷宫
- 走迷宫
- 走迷宫
- 走迷宫
- 走迷宫
- 走迷宫
- 走迷宫
- 走迷宫
- 走迷宫
- java 线程
- 文章搬家啦!
- 一道经典的矩阵题 ( 2010-12-5 16:39)
- Extjs 组件xtype
- Eclipse 设置文件的默认打开方式
- 走迷宫 (2010-12-11 08:54)
- 杭电1016 2010-12-11 09:54
- android系统移植默认参数设置(转)
- MySQL导入TxT数据文件和格式化输出
- BAT常用命令
- 杭电1203 DP 背包问题 (2010-12-23 20:42)
- 内核用于I/O的数据结构
- HDU 2065 "红色病毒"问题 递推题 (2011-1-1 16:39)
- HDU 1285 (2011-1-6 19:02)