這題交了7次 悲劇了 前幾次 因為把+行想成是左右走了 一直wa 後來看出來了 又把走過的樓梯給標記了 這裡的樓梯不能標記
因為可以在原地等著樓梯轉變 加的時間有可能是2 這樣普通佇列滿足不了最少的先搜 就用優先佇列了
view code
1 #include2 #include3 typedef struct
node
4st;
7int f[22][22];8
char c[22][22
];9 st q[10001
],t;
10int
d,p;
11void sort()//
把用時少的優先放在隊首
1222
else
23break;24
}25}26
void inque(int a,int
b)27
32int
main()33;
35while(scanf("
%d%d%*c
", &n,&m)!=eof)
3648
if(c[i][j] == 't'
)4953}
54getchar();55}
56 d = 0
;57 p = 0
;58 q[1].num = 0
;59 f[x[0]][y[0]] = 1
;60 inque(x[0],y[0
]);61
do62
85else
8690 f[qx+dis[i]][py] = 1;91
}92}93
else
94101 f[qx][py] = 1
;102
}103
}104
if(!f[px][qy]&&qy>0&&qy<=m&&(c[px][qy]=='
.'||c[px][qy]=='
|'||c[px][qy]=='
-'||c[px][qy]=='t'
))105
116else
117121 f[px][qy+dis[i]] = 1
;122
}123
}124
else
125132 f[px][qy] = 1
;133
}134
}135
}136 }while(d!=p);
137 printf("
%d\n
",q[p].num);
138}
139return0;
140 }
HDU1180 詭異的樓梯(bfs 優先佇列)
problem description hogwarts正式開學以後,harry發現在hogwarts裡,某些樓梯並不是靜止不動的,相反,他們每隔一分鐘就變動一次方向.input 測試資料有多組,每組的表述如下 第一行有兩個數,m和n,接下來是乙個m行n列的地圖,表示障礙物,表示走廊,或者 表示乙個...
HDU1180 詭異的樓梯(bfs 優先佇列)
problem description input 測試資料有多組,每組的表述如下 第一行有兩個數,m和n,接下來是乙個m行n列的地圖,表示障礙物,表示走廊,或者 表示乙個樓梯,並且標明了它在一開始時所處的位置 表示的樓梯在最開始是豎直方向,表示的樓梯在一開始是水平方向.地圖中還有乙個 s 是起點,...
G 詭異的樓梯 (優先佇列 BFS)
hogwarts正式開學以後,harry發現在hogwarts裡,某些樓梯並不是靜止不動的,相反,他們每隔一分鐘就變動一次方向.比如下面的例子裡,一開始樓梯在豎直方向,一分鐘以後它移動到了水平方向,再過一分鐘它又回到了豎直方向.harry發現對他來說很難找到能使得他最快到達目的地的路線,這時ron ...