C/C++每日一练21

第一题:爱丽丝的人偶

题目解析 :假设题目为 "人偶重量排序,找出最轻的前 3 个",核心是对数组排序后取前 3 个元素。思路 :读取人偶重量数组,使用 sort 函数升序排序,然后输出前 3 个元素。代码

cpp

运行

cpp 复制代码
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main() {
    int n;
    cin >> n;
    vector<int> weights(n);
    for (int i = 0; i < n; ++i) {
        cin >> weights[i];
    }
    sort(weights.begin(), weights.end());
    for (int i = 0; i < 3; ++i) {
        cout << weights[i] << " ";
    }
    return 0;
}

第二题:集合

题目解析 :假设题目为 "求两个集合的交集",即找出同时存在于两个集合中的元素,且结果无重复。思路 :用 unordered_set 存储第一个集合的元素,遍历第二个集合,若元素在第一个集合中且未被记录,则加入结果集。代码

cpp

运行

cpp 复制代码
#include <iostream>
#include <vector>
#include <unordered_set>
using namespace std;

int main() {
    int n, m;
    cin >> n >> m;
    vector<int> a(n), b(m);
    unordered_set<int> s;
    for (int num : a) {
        s.insert(num);
    }
    unordered_set<int> res_set;
    for (int num : b) {
        if (s.count(num)) {
            res_set.insert(num);
        }
    }
    vector<int> res(res_set.begin(), res_set.end());
    for (int num : res) {
        cout << num << " ";
    }
    return 0;
}

第三题:最长回文子序列

题目解析 :最长回文子序列是指字符串中最长的回文序列,子序列可不连续。用动态规划,dp[i][j]表示 s i..j 的最长回文子序列长度。思路 :当 s i == s j 时,dp[i][j] = dp[i+1][j-1] + 2;否则dp[i][j] = max(dp[i+1][j], dp[i][j-1])。从长度为 1 的子串开始递推,最终dp[0][n-1]即为结果。代码

cpp

运行

cpp 复制代码
#include <iostream>
#include <vector>
#include <string>
using namespace std;

int main() {
    string s;
    cin >> s;
    int n = s.size();
    vector<vector<int>> dp(n, vector<int>(n, 0));
    for (int i = n-1; i >= 0; --i) {
        dp[i][i] = 1;
        for (int j = i+1; j < n; ++j) {
            if (s[i] == s[j]) {
                dp[i][j] = dp[i+1][j-1] + 2;
            } else {
                dp[i][j] = max(dp[i+1][j], dp[i][j-1]);
            }
        }
    }
    cout << dp[0][n-1] << endl;
    return 0;
}

谢谢

相关推荐
神仙别闹4 小时前
基于 C++ 实现(控制台)学生成绩管理系统
开发语言·c++
会周易的程序员4 小时前
5 节点边缘冗余方案(上):基于 aiRaft 的物联网高可用控制面设计
c++·分布式·物联网·raft·iot·共识
伞伞悦读5 小时前
【第36期】Python 目录与路径详解:pathlib、文件遍历、创建、复制、移动和删除风险
开发语言·python
free-elcmacom7 小时前
C语言字符指针与字符串字面量——从一道“剑指 Offer”笔试题说起
c语言·visual studio
qq_199886877 小时前
第6板块·第4节:构建系统与多文件项目
c++·人工智能·gpu算力
2601_966949657 小时前
只拿到股票代码还不够:量化程序到底还需要哪些标的信息?——从数据建模开始理解股票元数据
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
m0_734571768 小时前
深入理解5g <十八>传输块tbsize的计算
开发语言·5g
汉克老师9 小时前
GESP2026年9月认证C++三级( 第三部分编程题(2、分割字符串))精讲
c++·gesp·小学生·学c++编程
估值探索者9 小时前
【Python量化系统工程化 #08】关了 SSH 就停?systemd 让脚本开机自启 + 异常自动拉起
java·c++·人工智能·分类·数据挖掘
RAN11426760089 小时前
1.3第一个程序的介绍
开发语言·qt