qwertyxk | 1013 | Accepted | 240K | 0MS | C++ | 1233B |
由于没有编译器,代码未经编译 ,直接在记事本里写完提交,AC了,对自己写代码的一种自信吧
模拟题,借鉴了大牛的思想来写的,用zero数组记录如果是even,那么左右的字母被标记为1,如果没有even那么,还是0
再申请一个time数组,初始化为零,如果是up,那么左边的字母time[字母]++,表示更重 右边的字母time[字母]--表示更轻
如果是down 那么上面的左右翻一下,以此来维持平衡
最后绝对值最大的字母,肯定是假币,轻的或者重的,利用上面的思想,数值小于0,则表示light 数值大于0则表示heavy
源代码如下:
#include<iostream>
#include<string>
#include<math.h>
using namespace std;
int main()
{
int n;
cin>>n;
while(n--)
{
int i;
char left[3][10],right[3][10],status[3][5],time[12];
int zero[12];
memset(time,0,sizeof(time));
memset(zero,0,sizeof(zero));
for(i=0;i<3;i++)
{
cin>>left[i]>>right[i]>>status[i];
switch(status[i][0])
{
case 'u':
{
for(int j=0;j<strlen(left[i]);j++)
{
time[left[i][j]-'A']++;
time[right[i][j]-'A']--;
}
}
break;
case 'd':
{
for(int j=0;j<strlen(left[i]);j++)
{
time[left[i][j]-'A']--;
time[right[i][j]-'A']++;
}
}
break;
case 'e':
{
for(int j=0;j<strlen(left[i]);j++)
{
zero[left[i][j]-'A']=1;
zero[right[i][j]-'A']=1;
}
}
break;
}
}
int max=-1;
char alpha;
for(i=0;i<12;i++)
{
if(zero[i])
continue;
if(max<abs(time[i]))
{
max=abs(time[i]);
alpha='A'+i;
}
}
cout<<alpha<<" is the counterfeit coin and it is ";
if(time[alpha-'A']<0)
cout<<"light."<<endl;
else if(time[alpha-'A']>0)
cout<<"heavy."<<endl;
}
return 0;
}