@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 能实现码风相同(指头文件与变量命名)

2025/1/19 20:00
1330274