赞
踩
内存限制: 256 Mb时间限制: 1000 ms
假期共有 n 天,每天可以在三件事中选择做一件事:
如果要求每天做的事情不能与前一天相同,则如何安排假期的活动,才能使得分数之和达到最大?
输入:
3
100 1 1
1 100 1
1 1 100
输出:
300
解析:本题采用递推算法,详见代码
- #include<bits/stdc++.h>
- using namespace std;
- int n;
- int x[200005];
- int y[200005];
- int z[200005];
- int main() {
- cin>>n;
- for (int i=1;i<=n;i++){
- cin>>x[i]>>y[i]>>z[i];
- x[i]+=max(y[i-1],z[i-1]);//第i天玩耍可以获得的最大值
- y[i]+=max(x[i-1],z[i-1]);//第i天刷题可以获得的最大值
- z[i]+=max(x[i-1],y[i-1]);//第i天躺平可以获得的最大值
- }
- cout<<max(x[n],max(y[n],z[n]));//第n天三种情况的最大值即为答案
- return 0;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。