【每周例题】蓝桥杯 C++ 最大花之能量
最大花之能量
题目
题目分析
1.这道题涉及了动态规划,因为他需要记录上一个数的和得出的结果后,继续往后寻找有没有和更大的数符合题目要求,不然按照一般思路,这个题目得出的最大能量和为:3、5、9(17)
2.我们设计两个数组,数组a存储原本的数组的数,数组b存储每个位置上的数为结尾的最长递增子序列的和
3.我们采用双重for循环完成动态规划:
- 对于每个数据i,它遍历之前的所有位置j(j < i),检查是否可以从j位置跳到i位置获得更长的递增子序列。
- 如果可以(a[i]>a[j]),则更新b[i]为之前的b[i]和b[j]+a[i]中的较大值
1 2 3 4 5 6 7 8 9 10 11 12 | int maxsum; for ( int i = 1; i <= n; i++) { for ( int j = 1; j < i; j++) { if (a[i] > a[j]) { b[i] = max(b[i], b[j] + a[i]); } } maxsum = max(b[i], maxsum); } |
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | #include<iostream> #include<bits/stdc++.h> using namespace std; int main() { int n; cin >> n; int a[1000], b[1000]; for ( int i = 1; i <= n; i++) { cin >> a[i]; b[i] = a[i]; } int maxsum; for ( int i = 1; i <= n; i++) { for ( int j = 1; j < i; j++) { if (a[i] > a[j]) { b[i] = max(b[i], b[j] + a[i]); } } maxsum = max(b[i], maxsum); } cout << maxsum << endl; return 0; } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现