ChatGPT不行啊
查看原帖
ChatGPT不行啊
393199
Kali_linux楼主2023/4/6 23:33

我问了下chatgpt怎么写这道题

他给出的代码是

#include <iostream>
#include <string>
#include <algorithm>
#include <unordered_set>
using namespace std;

int n;
string m;

bool is_palindrome(const string &s) {
    int n = s.size();
    for (int i = 0; i < n / 2; ++i) {
        if (s[i] != s[n - i - 1]) {
            return false;
        }
    }
    return true;
}

string add(const string &a, const string &b) {
    string res;
    int carry = 0;
    int n = a.size(), m = b.size();
    for (int i = 0; i < max(n, m); ++i) {
        int x = i < n ? a[n - i - 1] - '0' : 0;
        int y = i < m ? b[m - i - 1] - '0' : 0;
        int z = x + y + carry;
        res.push_back(z % n + '0');
        carry = z / n;
    }
    if (carry) {
        res.push_back(carry + '0');
    }
    reverse(res.begin(), res.end());
    return res;
}

int bfs() {
    unordered_set<string> visited;
    visited.insert(m);
    int step = 0;
    while (!visited.empty() && step < 30) {
        unordered_set<string> next;
        for (const string &s : visited) {
            if (is_palindrome(s)) {
                return step;
            }
            string t = s;
            reverse(t.begin(), t.end());
            string u = add(s, t);
            next.insert(u);
        }
        visited = move(next);
        ++step;
    }
    return -1;
}

int main() {
    cin >> n >> m;
    cout << (bfs() == -1 ? "Impossible!" : "STEP=" + to_string(bfs())) << endl;
    return 0;
}

结果似乎WA了

2023/4/6 23:33
加载中...