//============================================================================
//
// > File : poj1013.cpp
// > Author : flowertree
// > Time : 2015年12月22日
// > Algorithm : 天平问题 恶心模拟
//
//============================================================================
#include <iostream>
#include <string.h>
#include <stdio.h>
#include <algorithm>
using namespace std;
#define MAX 12
bool flag[MAX];
int mabey[MAX];
int main()
{
int m;
cin >> m;
while(m--)
{
char str1[7], str2[7], temp[10];
int len;
int Temp;
memset(flag, false, sizeof(flag));
memset(mabey, 0, sizeof(mabey));
for(int i = 0; i < 3; i++)
{
scanf("%s%s%s", str1, str2, temp);
len = strlen(str1);
if(strcmp(temp, "even") == 0)
{
for(int i = 0; i < len; i++)
{
mabey[str1[i] - 'A'] = 0;
flag[str1[i] - 'A'] = true;
mabey[str2[i] - 'A'] = 0;
flag[str2[i] - 'A'] = true;
}
continue;
}
else if(strcmp(temp, "up") == 0)
Temp = -1;
else if(strcmp(temp, "down") == 0)
Temp = 1;
bool mark[MAX];
memset(mark, false, sizeof(mark));
for(int i = 0; i < len; i++)
{
mark[str1[i] - 'A'] = true;
mark[str2[i] - 'A'] = true;
if(!flag[str1[i] - 'A'])
{
if(mabey[str1[i] - 'A'] == Temp)
{
mabey[str1[i] - 'A'] = 0;
flag[str1[i] - 'A'] = true;
}
else
mabey[str1[i] - 'A'] = -Temp;
}
if(!flag[str2[i] - 'A'])
{
if(mabey[str2[i] - 'A'] == -Temp)
{
mabey[str2[i] - 'A'] = 0;
flag[str2[i] - 'A'] = true;
}
else
mabey[str2[i] - 'A'] = Temp;
}
}
for(int i = 0; i < MAX; i++)
{
if(!mark[i])
{
flag[i] = true;
mabey[i] = 0;
}
}
}
for(int i = 0; i < 12; i++)
{
if(mabey[i] != 0)
{
if(mabey[i] == 1)
cout << (char)(i + 'A') << " is the counterfeit coin and it is heavy." << endl;
else if(mabey[i] == -1)
cout << (char)(i + 'A') << " is the counterfeit coin and it is light." << endl;
break;
}
}
}
system("pause");
return 0;
}
poj 1013 模拟 天平问题
最新推荐文章于 2021-04-16 17:19:27 发布