链接:https://ac.nowcoder.com/acm/contest/317/C
来源:牛客网
第一行一个整数nn,表示星球数
接下来一行有nn个整数,第ii个整数表示pipi
一个整数表示到达nn号星球时最大的耐久度
若不能到达nn号星球或到达时的最大耐久度为00则输出?1?1
1?n,?pi?30001?n,?pi?3000
#include<iostream> #include<algorithm> using namespace std; const int maxn = 5005; int a[maxn]; int b[maxn]; int vis[maxn], n; void dfs(int d, int u){ if (vis[d] || u >= n)return; vis[d] = 1; for (int i = 2; i <= n; ++i){ if (d > a[i]){ int t = d^a[i]; b[i] = max(b[i], t); if (!vis[t])dfs(t, i); //如果出现过的话就不再就不可以。 } } } int main() { cin >> n; for (int i = 1; i <= n; ++i) cin >> a[i]; dfs(a[1], 1); if (b[n])cout << b[n] << endl; else cout << -1 << endl; }
原文:https://www.cnblogs.com/ALINGMAOMAO/p/10323843.html