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

谢谢

相关推荐
qq_401700411 小时前
Qt Modbus协议0x00
开发语言·qt
星轨初途1 小时前
LeetCode 热题 100——day7 接雨水
数据结构·c++·笔记·算法·leetcode·职场和发展
yushikong1 小时前
关于rust开发ch32x033f8p6的一些记录
开发语言·后端·rust
qeen871 小时前
【数据结构】搜索二叉树的介绍与算法原理解析及实现
数据结构·c++·学习·算法·模板
吴声子夜歌1 小时前
正则表达式——环视
开发语言·正则表达式
Zenova EdgeOS2 小时前
C++ 工业边缘 Qt 桌面应用实战:从 QWidget 到模型视图、网络与多线程
网络·c++·qt
福大大架构师每日一题2 小时前
agno v2.8.7 发布:顾问模型、精准路线、调度能力全面升级,10项关键修复一次看懂
java·开发语言·数据库
老洋葱Mr_Onion2 小时前
【C++】CSP-J复赛dp问题(含模板题)
开发语言·c++
c2385610 小时前
MySQL 基础用法(上):库表管理与数据增删改
c语言·数据库·c++·mysql