Run ID 作者 问题 语言 测评结果 时间 内存 代码长度 提交时间
71173 sh25_zhoumy 田忌赛马 C++ 解答错误 0 MS 244 KB 1244 2025-10-24 15:33:50

Tests(0/2):


#include <iostream> #include <vector> #include <algorithm> using namespace std; vector<int> opponent; int N, X; vector<int> current; vector<vector<int>> result; void backtrack(int index) { if (index == N) { int my_wins = 0; for (int i = 0; i < N; i++) { if (current[i] >= opponent[i] + X) { my_wins++; } } if (my_wins > N / 2) { result.push_back(current); } return; } for (int i = 1; i <= N; i++) { if (find(current.begin(), current.end(), i) == current.end()) { current[index] = i; backtrack(index + 1); } } } int main() { cin >> N >> X; opponent.resize(N); for (int i = 0; i < N; i++) { cin >> opponent[i]; } current.resize(N); backtrack(0); // 去重并排序 sort(result.begin(), result.end()); result.erase(unique(result.begin(), result.end()), result.end()); for (const auto& sol : result) { for (int i = 0; i < N; i++) { cout << sol[i]; if (i < N - 1) cout << " "; } cout << endl; } return 0; }


测评信息: