Run ID 作者 问题 语言 测评结果 时间 内存 代码长度 提交时间
71174 sh25_zhoumy 田忌赛马 C++ 通过 0 MS 248 KB 1917 2025-10-24 15:34:36

Tests(2/2):


#include <iostream> #include <vector> #include <algorithm> using namespace std; int N, X; vector<int> opponent; // 对方马的等级 vector<int> my_horses; // 我方所有马的等级 vector<vector<int>> winning_strategies; // 存储所有获胜方案 // 检查当前方案是否获胜 bool is_winning_strategy(const vector<int>& strategy) { int win_count = 0; for (int i = 0; i < N; i++) { if (strategy[i] - opponent[i] >= X) { win_count++; } } return win_count > N / 2; // 胜场数大于对方 } // 生成所有排列并检查是否获胜 void generate_strategies(vector<int>& current, vector<bool>& used) { if (current.size() == N) { if (is_winning_strategy(current)) { winning_strategies.push_back(current); } return; } for (int i = 0; i < N; i++) { if (!used[i]) { used[i] = true; current.push_back(my_horses[i]); generate_strategies(current, used); current.pop_back(); used[i] = false; } } } int main() { // 读取输入 cin >> N >> X; opponent.resize(N); for (int i = 0; i < N; i++) { cin >> opponent[i]; } // 初始化我方马的等级 (1到N) my_horses.resize(N); for (int i = 0; i < N; i++) { my_horses[i] = i + 1; } // 生成所有方案 vector<int> current; vector<bool> used(N, false); generate_strategies(current, used); // 按字典序排序 sort(winning_strategies.begin(), winning_strategies.end()); // 输出结果 for (const auto& strategy : winning_strategies) { for (int i = 0; i < N; i++) { cout << strategy[i]; if (i < N - 1) cout << " "; } cout << endl; } return 0; }


测评信息: