代码求条
  • 板块灌水区
  • 楼主zhmdsg
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/12/15 09:04
  • 上次更新2024/12/15 11:26:31
查看原帖
代码求条
1073476
zhmdsg楼主2024/12/15 09:04

站外题。这段代码实际运行的时候发现输入的那几行有问题,用序号标出来了,求调。

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
const int MOD = 123456789;
// 找到元素在有序数列中的目标位置
int findTargetPos(const vector<int>& sortedArr, int num) {
    for (size_t i = 0; i < sortedArr.size(); ++i) {
        if (sortedArr[i] == num) {
            return i;
        }
    }
    return -1;  // 正常情况下不会执行到这,只是为了消除编译警告
}
int main() {
	//freopen("10.in","r",stdin);
	//freopen("10.out","w",stdout);
  //有问题的地方从这里开始,已通过其他方式确认
    int n;
    cin >> n;
    vector<int> arr;
    for (int i = 0; i < n; i++) {
    	int x;
        cin >> x; arr.push_back(x);
    }//有问题的地方从这里结束。
    vector<int> sortedArr = arr;
    sort(sortedArr.begin(), sortedArr.end());
    int energy = 0;
    for (int i = 0; i < n; ++i) {
        int targetPos = findTargetPos(sortedArr, arr[i]);
        cout << '?';
        while (i!= targetPos) {
            swap(arr[i], arr[targetPos]);
            energy += arr[i] + arr[targetPos];
            energy %= MOD;
            targetPos = findTargetPos(sortedArr, arr[i]);
            //cout << '!';
        } cout << energy << ' '; 
    }
    cout << energy << endl;
    //fclose(stdin);
    //fclose(stdout);
    return 0;
}
2024/12/15 09:04
加载中...