poj1013

Posted kasenbob

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了poj1013相关的知识,希望对你有一定的参考价值。

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的主要内容,如果未能解决你的问题,请参考以下文章

poj1013

POJ1013称硬币枚举

北大poj- 1013

Java-POJ1013-Counterfeit Dollar

Poj 1029

高斯消元