[1]探讨AI的C++风(以 DeepSeek R1为例)

取得代码

用户: 你好,我想写一篇文章"探讨AI的C++风(以 DeepSeek R1为例)",请你用C++写一个A+B高精的代码。
AI:

高精度加法 A+B 代码实现

#include <iostream>
#include <string>
#include <algorithm>
#include <vector>

using namespace std;
string addStrings(const string& a, const string& b) {
    string s1 = a;
    string s2 = b;
    reverse(s1.begin(), s1.end());
    reverse(s2.begin(), s2.end());
    
    vector<int> res;
    int carry = 0;
    
    for (int i = 0; i < max(s1.size(), s2.size()); ++i) {
        int n1 = (i < s1.size()) ? (s1[i] - '0') : 0;
        int n2 = (i < s2.size()) ? (s2[i] -  '0') : 0;
        int sum = n1 + n2 + carry;
        res.push_back(sum % 10);
        carry = sum / 10;
    }
    
    if (carry) res.push_back(carry);
    
    reverse(res.begin(), res.end());
    
    ostringstream oss;
    for (int num : res) {
        oss << num;
    }
    
    return oss.str();
}

int main() {
    string a, b;
    cin >> a >> b;
    cout << addStrings(a, b) << endl;
    return 0;
}

人工分析

1. 头文件偏好

AI 更偏向其他头文件,而不是 bits/stdc++.h ,如本次示例代码。
经过 \(6\) 道题的实验(我保证没有提交),我发现AI优先使用 <algorithm><vector><string> 等现代C++库。

2. 函数封装

经观察, AI 通常会使用长但易懂的函数、变量名,如 addStringsBigintaddSumadd 等。
AI 通常会将核心逻辑封装为独立函数(如 addStrings

3. 字符串处理

通过了解,AI 100%使用 reverse() 函数进行处理字符串顺序。

4. 容器使用

我发现, AI 特别喜欢用 vector ,原则就是:能用 vector ,绝不用数组。

5. 编码风格

AI 通常会把大括号跟在函数后面,而不是换行,如:

int main(){
  return 0;
}

另,AI 一般不会在核心函数中输出(cout) ,一般都是用 ostringstreamstringstream 保存下来,在主函数中输出。


总结

特征项 AI生成代码 人工优化代码
异常处理 通常没考虑到 会增加合法性校验
性能优化 基础实现 可能预分配内存
注释 几乎没有 通常有注释
模板使用 较少 可能用模板

最后,祝愿管理大大可以通过本文揪出在比赛中使用 AI 作弊的人


评论区打出下期的推荐内容,我们会随机选一个哦!

posted @ 2025-03-12 19:58  [GuiHua]  阅读(13)  评论(0)    收藏  举报

GuiHua博客 by GuiHua is licensed under CC BY-NC-ND 4.0