当前位置: 首页 > news >正文

C/C++每日一练18

第一题:压缩字符串

题目描述:将字符串中连续重复的字符压缩为 “字符 + 次数” 的形式,若次数为 1 则只保留字符。例如输入 “aabcccccaaa”,输出 “a2b1c5a3”。算法原理:遍历字符串,用一个变量记录当前字符,另一个变量记录连续出现的次数。当遇到与当前字符不同的字符时,将当前字符和次数拼接到结果中,然后更新当前字符和次数。遍历结束后,别忘了拼接最后一组字符和次数。代码:

cpp

运行

#include <iostream> #include <string> using namespace std; int main() { string s, res; cin >> s; if (s.empty()) { cout << res << endl; return 0; } char curr = s[0]; int cnt = 1; for (int i = 1; i < s.size(); ++i) { if (s[i] == curr) { cnt++; } else { res += curr + to_string(cnt); curr = s[i]; cnt = 1; } } res += curr + to_string(cnt); cout << res << endl; return 0; }

第二题:恰卡和蜜柑

题目描述:恰卡有 n 个蜜柑,第 i 个蜜柑的甜度为 a [i],他想选 k 个蜜柑,使得甜度之和最大,求最大甜度和。算法原理:这是典型的 “选最大 k 个数求和” 问题。可以先对数组进行降序排序,然后取前 k 个数相加即可。排序可以用 C++ 的 sort 函数,通过自定义比较器实现降序。代码:

cpp

运行

#include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { int n, k; cin >> n >> k; vector<int> a(n); for (int i = 0; i < n; ++i) { cin >> a[i]; } sort(a.rbegin(), a.rend()); int sum = 0; for (int i = 0; i < k; ++i) { sum += a[i]; } cout << sum << endl; return 0; }

第三题:01 背包

题目描述:有 n 件物品,每件物品有重量 w [i] 和价值 v [i],背包容量为 C,每件物品只能选一次,求背包能装下的最大价值。算法原理:用动态规划解决。定义 dp [j] 为容量为 j 的背包能装的最大价值。初始时 dp [0]=0,其他 dp [j]=0。对于每件物品 i,从容量 C 倒序遍历到 w [i],更新 dp [j] = max (dp [j], dp [j - w [i]] + v [i])。倒序遍历是为了保证每件物品只被选一次。最后 dp [C] 就是答案。代码:

cpp

运行

#include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { int n, C; cin >> n >> C; vector<int> w(n), v(n); for (int i = 0; i < n; ++i) { cin >> w[i] >> v[i]; } vector<int> dp(C + 1, 0); for (int i = 0; i < n; ++i) { for (int j = C; j >= w[i]; --j) { dp[j] = max(dp[j], dp[j - w[i]] + v[i]); } } cout << dp[C] << endl; return 0; }
谢谢
http://www.jsqmd.com/news/1341795/

相关文章:

  • SuperRDP终极指南:三步解锁Windows远程桌面完整功能
  • kartoza/docker-geoserver与PostGIS完美结合:空间数据存储最佳实践
  • YimMenu终极指南:GTA5安全增强与游戏体验全面优化方案
  • 2026年制造业与服务业ISO 14083运输链温室气体核算服务公司甄选 - 优企名品
  • 2026年实测:4家宁波语文小升初机构横向对比
  • 揭秘10Eros-conversions核心技术:图像文本转视频量化模型实现原理
  • 2024最新KRAGEN安装教程:从Docker部署到Weaviate向量数据库配置全流程
  • Agent 工具调用谁都会,但记忆和规划没做好,项目照样翻车
  • C/C++每日一练19
  • 发现植物大战僵尸的隐藏玩法:PVZTools修改器完全指南 [特殊字符][特殊字符]‍♂️
  • AP通过DNS获取AC列表注册典型配置举例
  • 一年级适用练字线上课推荐:【简知科技】贴合低龄 - 晴光转树
  • Amyloid β-protein (1-16) ;DAEFRHDSGYQVHHQK
  • LangGraph火了之后,为什么团队反而更关心维护成本?
  • Go sync.Pool 对象池使用踩坑——GC 频繁触发下的对象物理泄露与内存抖动排查
  • Cursor、Claude Code 和 Codex 如何控制使用成本?从任务拆分到模型选择
  • MOMENT-1-large完整指南:从安装到部署的终极时间序列分析工具
  • 免费IP定位方案:gh_mirrors/ipd/IP_database核心功能详解
  • 解决TMPEffects常见问题:Unity文本动画插件排错与性能优化
  • 嵌入式按键处理:消抖、状态机与组合键设计
  • 2026年金堂电商平台的深耕: 从线上曝光到数据反哺的经营闭环 - 市场沸点
  • 动物森友会岛屿设计终极指南:使用Happy Island Designer打造梦想岛屿
  • 如何在5分钟内快速上手ModernBERT-base?完整安装与基础使用教程
  • 【单片机课程设计/毕业设计】基于 51/STM32 单片机的阈值触发型风扇窗帘联动控制系统 基于 51/STM32 单片机的三模式家居环境智能控制器开发(011502)
  • Codex 接入飞书
  • 暑期学习:自学java第二十二天
  • Google Play冷启动,别再一个人硬扛:GP好评互助群来了
  • 档案库房“十防”监控系统建设方案
  • nguyenvulebinh/wav2vec2-base-vi-vlsp2020部署指南:从Colab到生产环境的无缝迁移方案
  • Git 用法总结