PAT-BASIC1089——狼人殺-簡單版
阿新 • • 發佈:2018-11-06
我的PAT-BASIC程式碼倉:https://github.com/617076674/PAT-BASIC
原題連結:https://pintia.cn/problem-sets/994805260223102976/problems/1038429385296453632
題目描述:
知識點:暴力破解法
思路:暴力破解,遍歷所有可能的狼人組合
時間複雜度是O(N ^ 2)。空間複雜度是O(1)。
C++程式碼:
#include<iostream> #include<string> using namespace std; int changeToNum(string s); int main(){ int N; cin >> N; string input[N]; string tempString; for(int i = 0; i < N; i++){ cin >> tempString; input[i] = tempString; } int wolf1; int wolf2; int flags[N]; int count; for(wolf1 = 0; wolf1 < N; wolf1++){ for(wolf2 = wolf1 + 1; wolf2 < N; wolf2++){ count = 0; for(int i = 0; i < N; i++){ if(input[i][0] == '-'){ if(changeToNum(input[i]) != wolf1 + 1 && changeToNum(input[i]) != wolf2 + 1){ count++; flags[i] = 1; }else{ flags[i] = 0; } }else if(input[i][0] == '+'){ if(changeToNum(input[i]) == wolf1 + 1 || changeToNum(input[i]) == wolf2 + 1){ count++; flags[i] = 1; }else{ flags[i] = 0; } } } if(count == 2 && (flags[wolf1] + flags[wolf2] == 1)){ printf("%d %d", wolf1 + 1, wolf2 + 1); return 0; } } } printf("No Solution"); return 0; } int changeToNum(string s){ int result = 0; for(int i = 1; i < s.length(); i++){ result = result * 10 + s[i] - '0'; } return result; }
C++解題報告: