牛客寒假算法基础集训营1 C. 小a与星际探索

题目描述:

链接:https://ac.nowcoder.com/acm/contest/317/C
来源:牛客网

思路:dp找到1——n星球的最大耐久度

代码如下:

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 #define ll long long
 4  
 5 int main()
 6 {
 7     int n,a[3005],dp[3005];
 8     while(cin >> n)
 9     {
10         memset(dp,0,sizeof(dp));
11         for(int i = 1;i <= n;i++)
12         cin >> a[i];
13         dp[1] = a[1];
14         //从第二个星球开始遍历寻找最大耐久度
15         for(int i = 2;i <= n;i++)
16         {
17             for(int j = 1;j < i;j++)//从j到i星球
18             if(a[i] < a[j] && dp[j])//如果从j可以到i星球而且从1号星球可以到达j星球
19             dp[i] = max(dp[i],dp[j] ^ a[i]);//更新i星球的最大耐久度
20         }
21         if(dp[n])
22         cout << dp[n] << endl;
23         else
24         cout << -1 << endl;
25     }
26     return 0;
27 }

猜你喜欢

转载自www.cnblogs.com/lu1nacy/p/10349374.html