摘要:暴搜,測試每個或重或輕
#include <iostream>
#include <string>
using namespace std;
typedef struct weighing{
string left;
string right;
string result;
}weighing;
weighing w[3];
bool check(string coin, int weight, int i )
{
if( w[i].left.find(coin) != string::npos ){
if( weight == 1){
if(w[i].result != "up"){
return false;
}
return true;
}
if( weight == -1){
if(w[i].result != "down"){
return false;
}
return true;
}
}
if( w[i].right.find(coin) != string::npos ){
if( weight == 1){
if(w[i].result != "down"){
return false;
}
return true;
}
if( weight == -1){
if(w[i].result != "up"){
return false;
}
return true;
}
}
if( w[i].result != "even" ){
return false;
}
return true;
}
int main()
{
int n;
cin >> n;
while( n > 0 ){
for(int i=0; i<3; i++){
cin >> w[i].left >> w[i].right >> w[i].result;
}
for(int i=0; i<12; i++){
char ch = ('A'+i);
char buf[10];
sprintf(buf, "%c", ch);
string coin = buf;
int j=0;
int weight = 1;
for(j=0; j<3; j++){
if( !check(coin, weight, j) ){
break;
}
}
if( j == 3 ){
cout << coin << " is the counterfeit coin and it is heavy." << endl;
break;
}
weight = -1;
for(j=0; j<3; j++){
if( !check(coin, weight, j) ){
break;
}
}
if( j == 3 ){
cout << coin << " is the counterfeit coin and it is light." << endl;
break;
}
}
n--;
}
return 0;
}