我的北大ACM POJ 1013解答

我的北大ACM POJ 1013解答
又一个水题,居然还贡献了3次WA。。。

Source Code

Problem: 1013
User: absolute
Memory: 204K
Time: 0MS
Language: C++
Result: Accepted
  • Source Code
  • #include <stdio.h>
    #include <string>
    void POJ1013();
    int main()
    {
    POJ1013();
    return 0;
    }
    void POJ1013()
    {
    int i,k,casen;
    scanf("%d",&casen);
    while(casen>0)
    {
    casen--;
    bool real[12]={0};
    int heavy[12]={0};
    int light[12]={0};
    for(k=0;k<3;k++)
    {
    char input[3][8]={0};
    int j;
    scanf("%s %s %s",&input[0],&input[1],&input[2]);
    //平衡则放入真数组,表示这次称的都是真币
    if(strcmp(input[2],"even")==0)
    {
    j=0;
    while(input[0][j]!='\0')
    {
    real[input[0][j]-'A']=true;
    real[input[1][j]-'A']=true;
    j++;
    }
    }
    //右边起来,左边怀疑为重,右边怀疑为轻
    else if(strcmp(input[2],"up")==0)
    {
    j=0;
    while(input[0][j]!='\0')
    {
    heavy[input[0][j]-'A']++;
    light[input[1][j]-'A']++;
    j++;
    }
    }
    //右边下降,左边怀疑为轻,右边为重
    else if(strcmp(input[2],"down")==0)
    {
    j=0;
    while(input[0][j]!='\0')
    {
    light[input[0][j]-'A']++;
    heavy[input[1][j]-'A']++;
    j++;
    }

    }
    }
    char maxnum='A';
    int heavyorlight=0;
    //假币必然是不在真数组中,而且它必然只能在重数组和轻数组之一出现,而不能同时出现
    //但是有可能被怀疑的只称过一次,所以必须选出被怀疑最多次的那个
    for(i='A';i<'M';i++)
    {
    if(real[i-'A'])
    continue;
    int temp=0;
    if(light[i-'A']>0&&heavy[i-'A']==0)
    {
    if(heavyorlight==1)
    temp=light[maxnum-'A'];
    else if(heavyorlight==2)
    temp=heavy[maxnum-'A'];
    if(light[i-'A']>temp)
    {
    heavyorlight=1;
    maxnum=i;
    }
    continue;
    }
    if(light[i-'A']==0&&heavy[i-'A']>0)
    {
    if(heavyorlight==1)
    temp=light[maxnum-'A'];
    else if(heavyorlight==2)
    temp=heavy[maxnum-'A'];
    if(heavy[i-'A']>temp)
    {
    heavyorlight=2;
    maxnum=i;
    }
    continue;
    }
    }
    if(heavyorlight==1)
    printf("%c is the counterfeit coin and it is light.\n",maxnum);
    else
    printf("%c is the counterfeit coin and it is heavy.\n",maxnum);
    }
    }

你可能感兴趣的:(ACM)