#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
bool ok(char p[3][3][10],int w,char ch) //数组做形参 ,w表示轻重,ch为枚举的那枚硬币
{
int i,j,lw,rw; //lw为左边的重量,rw为右边的
for(i=0;i<3;i++)
{
lw=0; rw=0; //初值一定要在此处赋!
for(j=0;j<strlen(p[i][0]);j++)
if(p[i][0][j]==ch) lw=w; //处理左边
for(j=0;j<strlen(p[i][1]);j++)
if(p[i][1][j]==ch) rw=w; //处理右边
if((p[i][2][0]=='e'&&lw==rw)||(p[i][2][0]=='u'&&lw>rw)||(p[i][2][0]=='d'&&lw<rw)) continue;
else return false; //判断是否可行
}
return true;
}
int main()
{
char f[3][3][10]; //储存读入数据
int i,j,weight,cas,z;
cin>>cas;
for(z=0;z<cas;z++)
{
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
cin>>f[i][j];
if(f[i][j]==" ") j--; //空格字符会影响读入,如为空格,此次读入作废
}
for(i=0;i<12;i++)
for(weight=-1;weight<=1;weight+=2) //wight,-1为轻,1为重
if(ok(f,weight,char('A'+i)))
{
cout<<char('A'+i)<<" is the counterfeit coin and it is ";
if(weight<0) cout<<"light."<<endl;
else cout<<"heavy."<<endl;
break;
}
}
return 0;
}
poj1013 Counterfeit Dollar 称硬币
最新推荐文章于 2024-07-16 10:12:41 发布