HDU1548(楼梯问题bfs)
#include"cstdio" #include"queue" #include"cstring" using namespace std; const int MAXN=205; typedef pair<int,int> P; int N,A,B; int K[MAXN]; int vis[MAXN]; int bfs() { queue<P> que; que.push(P(0,A)); vis[A]=1; while(!que.empty()) { P now=que.front();que.pop(); if(now.second==B) { return now.first; } for(int i=-1;i<=1;i++) { int next=now.second+K[now.second]*i; if(0<next&&next<=N&&!vis[next]) { vis[next]=1; que.push(P(now.first+1,next)); } } } return -1; } int main() { while(scanf("%d",&N)!=EOF&&N!=0) { scanf("%d %d",&A,&B); for(int i=1;i<=N;i++) { scanf("%d",&K[i]); } memset(vis,0,sizeof(vis)); printf("%d\n",bfs()); } return 0; }
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步