@chen_zhe
根据他发给我的 H 题两次提交的代码。
第一次:
WA
#include <iostream>
#include <vector>
#include <algorithm>
#define int long long
using namespace std;
void adjustSeats(vector<vector<int>>& matrix, int n, int m) {
// 计算每列的总和
vector<int> colSum(m, 0);
for (int j = 0; j < m; ++j) {
for (int i = 0; i < n; ++i) {
colSum[j] += matrix[i][j];
}
}
// 找到最大和最小总和的列
int maxSum = *max_element(colSum.begin(), colSum.end());
int minSum = *min_element(colSum.begin(), colSum.end());
vector<int> students; // 用来存储离开座位的学生的知识水平
// 收集所有符合条件的列的学生
for (int j = 0; j < m; ++j) {
if (colSum[j] == maxSum || colSum[j] == minSum) {
for (int i = 0; i < n; ++i) {
students.push_back(matrix[i][j]);
}
}
}
// 将这些学生按降序排列
sort(students.rbegin(), students.rend());
// 按照蛇形顺序重新填充座位
int idx = 0;
for (int i = 0; i < n; ++i) {
if (i % 2 == 0) {
// 奇数行,左到右
for (int j = 0; j < m; ++j) {
matrix[i][j] = students[idx++];
}
} else {
// 偶数行,右到左
for (int j = m - 1; j >= 0; --j) {
matrix[i][j] = students[idx++];
}
}
}
}
signed main() {
int n, m, k;
cin >> n >> m >> k;
// 输入矩阵
vector<vector<int>> matrix(n, vector<int>(m));
for (int i = 0; i < n; ++i) {
for (int j = 0; j < m; ++j) {
cin >> matrix[i][j];
}
}
// 执行 k 次调整
for (int i = 0; i < k; ++i) {
adjustSeats(matrix, n, m);
}
// 输出最终结果
for (int i = 0; i < n; ++i) {
for (int j = 0; j < m; ++j) {
cout << matrix[i][j] << " ";
}
cout << endl;
}
return 0;
}
第二次:
#include <bits/stdc++.h>
using namespace std;
vector<long long> columnSum(vector<vector<long long>>& a, int n, int m) {
vector<long long> sum(m, 0);
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
sum[j]+=a[i][j];
}
}
return sum;
}
void adjust(vector<vector<long long>>& a, int n, int m) {
vector<long long> sum = columnSum(a, n, m);
long long minSum = sum[0], maxSum = sum[0];
for (int i = 1; i < m; i++) {
minSum = min(minSum, sum[i]);
maxSum = max(maxSum, sum[i]);
}
vector<int> cols;
for (int i = 0; i < m; i++) {
if (sum[i]==minSum || sum[i]==maxSum) {
cols.push_back(i);
}
}
vector<long long> line;
for (int j = 0; j < cols.size(); j++) {
int col = cols[j];
for (int i = 0; i < n; i++) {
line.push_back(a[i][col]);
}
}
sort(line.begin(), line.end(), greater<int>());
int index = 0;
for (int i = 0; i < n; i++) {
if (i % 2 == 0) {
for (int j = 0; j < cols.size(); j++) {
int col = cols[j];
a[i][col]=line[index++];
}
} else {
for (int j = cols.size() - 1; j >= 0; j--) {
int col = cols[j];
a[i][col]=line[index++];
}
}
}
}
int main() {
int n, m, k;
cin >> n >> m >> k;
vector<vector<long long>> a(n, vector<long long>(m));
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
cin >> a[i][j];
}
}
for (int i = 0; i < k; i++) {
adjust(a, n, m);
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
cout << a[i][j] << " ";
}
cout << endl;
}
return 0;
}
两次代码基本相同,码风相同。仅仅改变了头文件及增添了 columnSum
函数,很明显有调试过程。
请问你觉得哪个 AI 能在前一次的基础上调试?哪个能有调试过程?
如果管理觉得他是用 AI 写的,能不能给出详细证据?很少有 AI 能实现码风相同(指头文件与变量命名)