码迷,mamicode.com
首页 > 其他好文 > 详细

poj1013

时间:2019-07-19 15:34:15      阅读:71      评论:0      收藏:0      [点我收藏+]

标签:span   问题   ble   硬币   include   can   else   有一个   并且   

1.链接地址

https://vjudge.net/problem/POJ-1013#author=linjiale

2.问题描述

  思远宝宝有一打银币( 一打有几个你知道么)。然而,其中有一个是伪造的(不知道是偏重还是偏轻),现在思远有三次机会进行天平称重,并且保证三次后有解,请你找出伪造银币并告诉我是偏重还是偏轻。

输入样例

1 
EFGH ABCD even 
EFGI ABCI  even 
ABEF CDFK up

输出样例

K is the counterfeit coin and it is light. 

3.解题思路

如果是平衡 那么比较中的硬币都是真的

如果不平衡,那么所有的硬币都可能要怀疑   如果重那么+1  如果轻-1 , 最后统计怀疑的程度。

4.算法实现源代码

#include<stdio.h>
#include<math.h>
#include<memory.h>
 
int main()
{
    int t,i,j,k,max;
    char ans;
    scanf("%d",&t);
    for(i=0;i<t;i++)
    {
        char l[3][6],r[3][6],w[3][6];
        int time[L+1],flag[L+1];
        memset(time,0,sizeof(time));
        memset(flag,0,sizeof(flag));
 
        for(j=0;j<3;j++)
        {
            scanf("%s %s %s",l[j],r[j],w[j]);
        }
 
        for(j=0;j<3;j++)
        {
            switch(w[j][0])
            {
                case u:
                    {
                        for(k=0;l[j][k];k++)
                        {
                            time[ l[j][k] ]++;
                            time[ r[j][k] ]--;
                        }
                        break;
                    }
                case d:
                    {
                        for(k=0;l[j][k];k++)
                        {
                            time[ l[j][k] ]--;
                            time[ r[j][k] ]++;
                        }
                        break;
                    }
                case e:
                    {
                        for(k=0;l[j][k];k++)
                        {
                            flag[ l[j][k] ]=1;
                            flag[ r[j][k] ]=1;
                        }
                        break;
                    }
            }
        }
 
        max=0;
        for(j=A;j<=L;j++)
        {
            if(flag[j]) continue;
            else if(max<=abs(time[j]))
            {
                max=abs(time[j]);
                ans=j;
            }
        }
 
        if(time[ans]>0) printf("%c is the counterfeit coin and it is heavy.\n",ans);
        else printf("%c is the counterfeit coin and it is light.\n",ans);
    }
    return 0;
}

 

poj1013

标签:span   问题   ble   硬币   include   can   else   有一个   并且   

原文地址:https://www.cnblogs.com/KasenBob/p/11213367.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!