gesp c++ 七级知识点

以下是根据GESP C++七级考试大纲的 超详细知识点解析与代码实现,涵盖数学函数、复杂动态规划、图论算法、哈希表等核心内容,每个知识点均包含 概念说明、应用场景、使用方法、优缺点完整代码示例


一、数学库函数

1.1 三角函数
  • 概念
    sin(x)cos(x)tan(x)分别计算弧度为x的正弦、余弦、正切值。
  • 应用场景:几何计算、物理运动模拟、图形学。
  • 代码示例
    #include 
    #include 
    using namespace std;
    
    int main() {
         
        double angle = 45.0 * M_PI / 180.0; // 转换为弧度
        cout << "sin(45°) = " << sin(angle) << endl; // 输出≈0.707
        cout << "cos(45°) = " << cos(angle) << endl; // 输出≈0.707
        return 0;
    }
    
  • 注意:参数为弧度,需将角度转换为弧度(如角度 × π/180)。

1.2 对数与指数函数
  • 函数
    • log10(x):以10为底的对数
    • log2(x):以2为底的对数
    • exp(x):计算e的x次幂
  • 应用场景:数据压缩(熵计算)、复杂度分析、概率计算。
  • 代码示例
    cout << "log10(100) = " << log10(100) << endl; // 输出2
    cout << "log2(8) = " << log2(8) << endl;       // 输出3
    cout << "exp(1) = " << exp(1) << endl;         // 输出≈2.718
    

二、复杂动态规划

2.1 二维动态规划(最长公共子序列LCS)
  • 问题描述:求两个字符串的最长公共子序列长度。
  • 状态定义dp[i][j]表示str1[0..i-1]str2[0..j-1]的LCS长度。
  • 转移方程
    if (str1[i-1] == str2[j-1]) dp[i][j] = dp[i-1][j-1] + 1
    else dp[i][j] = max(dp[i-1][j], dp[i][j-1])
    
  • 代码示例
    int lcs(string s1, string s2) {
         
        int m = s1.size(), n = s2.size();
        vector<vector<int>> dp(m+1, vector<int>(n+1, 0));
        for (int i=1; i<=m; i++) {
         
            for (int j=1; j<=n; j++) {
         
                if (s1[i-1] == s2[j-1]) 
                    dp[i][j] = dp

你可能感兴趣的:(gesp c++ 七级知识点)