模擬、不良品の硬貨を探して、Counterfeit Dolar(POJ 1013)
8072 ワード
テーマリンク:http://poj.org/problem?id=1013
問題解決報告:
1、不良品の重さがよく分かりませんので、それぞれの文字が疑われる回数をtime['L'+1]で記録します.負の数は軽いが、正の数なら重い.
2、ゼロ['L'+1]で記録します.天びんの結果がevenの場合、コインは絶対本物、trueです.
問題解決報告:
1、不良品の重さがよく分かりませんので、それぞれの文字が疑われる回数をtime['L'+1]で記録します.負の数は軽いが、正の数なら重い.
2、ゼロ['L'+1]で記録します.天びんの結果がevenの場合、コインは絶対本物、trueです.
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int t;
cin>>t;
while(t--)
{
char left[3][6],right[3][6],result[3][6];
int time['L'+1]= {0}; /// ;
bool zero['L'+1]= {false}; /// ;
for(int k=0; k<3; k++)
cin>>left[k]>>right[k]>>result[k];
for(int i=0; i<3; i++) ///3
{
///
switch(result[i][0])
{
case 'e':///
{
for(int j=0; left[i][j]!='\0'; j++)
{
zero[left[i][j]]=true;
zero[right[i][j]]=true;
}
break;
}
case 'u':///
{
for(int j=0; left[i][j]!='\0'; j++)
{
time[left[i][j]]++;
time[right[i][j]]--;
}
break;
}
case 'd':///
{
for(int j=0; left[i][j]!='\0'; j++)
{
time[left[i][j]]--;
time[right[i][j]]++;
}
break;
}
}
}
int Max=-1;///
char alpha;
for(int j='A';j<='L';j++)
{
if(zero[j])
continue;
if(Max<=abs(time[j]))
{
Max=abs(time[j]);
alpha=j;
}
}
cout<<alpha<<" is the counterfeit coin and it is ";
if(time[alpha]>0)
cout<<"heavy.
";
else cout<<"light.
";
}
return 0;
}