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;
}

谢谢

相关推荐
C^h7 小时前
c++ string
开发语言·c++
听风说ml7 小时前
socket编程 【C语言】
c语言·udp·tcp·socket编程
raindayinrain7 小时前
c++高性能--原子操作,无锁编程,操作顺序
开发语言·c++·性能优化
学逆向的7 小时前
C++ 合并命名空间
开发语言·c++·网络安全
Zhao-Jichao7 小时前
VS2026 打包 C++ 程序生成 EXE,借助 Installer Project 扩展工具
开发语言·c++
学逆向的8 小时前
C 局部静态变量
c语言·开发语言·网络安全
小徐不徐说8 小时前
C++ 接口与插件设计:从工厂注册到 Qt 动态插件
数据库·c++·qt·系统架构·程序设计
大都督会赢的9 小时前
C++第一节课
开发语言·c++
UIU1149 小时前
P1233 [ICPC 2001 Taejon R] 木棍加工
数据结构·c++·算法·动态规划
“AI国潮设计-小江”9 小时前
【AIGC实战】Python+Stable Diffusion打造“英歌舞财神”IP,解锁“马到成功”等爆款情绪营销文案设计
开发语言·人工智能·python·prompt·aigc