zoukankan      html  css  js  c++  java
  • POJ1013

    大致题意:

    有一打(12枚)硬币,其中有且仅有1枚假币,11枚真币

    用A~L作为各个硬币的代号

    假币可能比真币略轻,也可能略重

    现在利用天枰,根据Input输入的3次称量,找出假币,并输出假币是轻还是重。

    #include<stdio.h>
    #include<string.h>
    #include<math.h>
    #include<stdlib.h>
    int Abs(int a)
    {
        return a>0?a:(-a);
    }
    int vis[15];
    int main()
    {
        int i,j,T,k;int ans;
        char str1[10],str2[10],str3[10];
        scanf("%d",&T);
        getchar();
        while(T--)
        {
            ans=0;
            for(i=1;i<=12;i++)
            {
                vis[i]=10;
            }
            for(k=1;k<=3;k++)
            {
                //getchar();
                memset(str1,0,sizeof(str1));
                memset(str2,0,sizeof(str2));
                memset(str3,0,sizeof(str3));
                scanf("%s %s %s",str1,str2,str3);
                if(strcmp(str3,"even")==0)
                {
                    for(i=0;str1[i]!='\0';i++)
                        vis[str1[i]-'A'+1]=0;
                    for(i=0;str2[i]!='\0';i++)
                        vis[str2[i]-'A'+1]=0;
                }                
                else if(strcmp(str3,"up")==0)
                {
                    for(i=0;str1[i]!='\0';i++)
                    if(vis[str1[i]-'A'+1]!=0)
                        vis[str1[i]-'A'+1]++;//左边重假币 
                    for(i=0;str2[i]!='\0';i++)
                    if(vis[str2[i]-'A'+1]!=0)
                        vis[str2[i]-'A'+1]--;//右边轻假币 
                }
                else
                {
                    for(i=0;str1[i]!='\0';i++)
                    if(vis[str1[i]-'A'+1]!=0)
                        vis[str1[i]-'A'+1]--;//左边轻假币 
                    for(i=0;str2[i]!='\0';i++)
                    if(vis[str2[i]-'A'+1]!=0)
                        vis[str2[i]-'A'+1]++;//右边重假币
                }
                ans=0;
                for(i=1;i<=12;i++)
                {
                    if(Abs(vis[i]-10)>Abs(ans)&&vis[i]!=0)
                        {
                            ans=vis[i]-10;
                            j=i;
                           // printf("%d\n",j);
                        }
                }
            }
            if(ans>0)
                printf("%c is the counterfeit coin and it is heavy.\n",j+64);
            else
                printf("%c is the counterfeit coin and it is light.\n",j+64);
        }
        system("pause");
        return 0;
    }
                
             
             
                
            
        
        
    
  • 相关阅读:
    概率论
    英语单词每日学习
    网上学习新课程--使用开发板动手进行uboot、内核以及驱动移植
    csdn专家主页
    material of DeepLearning
    I2C协议
    SVN appears to be part of a Subversion 问题心得
    @清晰掉 各种类型32位与64位下各类型长度对比
    超级方便的linux命令手册
    HTTP协议详解(转)
  • 原文地址:https://www.cnblogs.com/hxsyl/p/2610654.html
Copyright © 2011-2022 走看看