标签:== 按钮 pre bit 状态 lse 描述 dfs names
5 1 5
3 3 1 2 5
3
上述答案得到方式如下:
从1楼按上,上到4楼
在4楼按下,到达2楼
在2楼按上,到达5楼
共3步
#include <bits/stdc++.h> using namespace std; int n,a,b; int f[210]; int ans=0x7ffffff; int vis[210]; void dfs(int now,int times) { if(times>n) return; if(now==b) { ans = min(ans,times); } else if(times<=ans) { vis[now] = 1; if(now-f[now]>=1&&!vis[now-f[now]]) { // vis[now-f[now]] = 1; dfs(now-f[now],times+1); // vis[now-f[now]]=0; } if(now+f[now]<=n&&!vis[now+f[now]]) { //vis[now+f[now]] = 1; dfs(now+f[now],times+1); //vis[now-f[now]] = 0; } vis[now] = 0; } } int main() { cin>>n>>a>>b; for(int i=1;i<=n;i++) { cin>>f[i]; } vis[a] = 1; dfs(a,0); if(ans!=0x7ffffff) cout<<ans; else cout<<-1; return 0; }
//注释部分出错wa了很多发 状态的改变和回溯
对于大佬们的水题
标签:== 按钮 pre bit 状态 lse 描述 dfs names
原文地址:https://www.cnblogs.com/hao-tian/p/9350766.html