PAT-BASIC1089——狼人杀-简单版
我的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++解题报告: