zoukankan      html  css  js  c++  java
  • Counterfeit Dollar (枚举)

    ~题目连接~

    http://poj.org/problem?id=1013

    输入

    1 
    ABCD EFGH even 
    ABCI EFJK up 
    ABIJ EFGH even 

    结果

    K is the counterfeit coin and it is light. 

    even 都为真,标记(为保持好看,标记写成了累加,最后判断是否为0)

    up 右重左轻,分类累加

    down 右轻左重,分类累加

    k 记录假币出现次数

    最后判断未被标记,且与假币出现次数相等的数据(若出现多枚假币,只能说明输入数据错误……^_^……)

    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    #define maxn 30
    
    struct node
    {
        int up,down,even;
    } Q[maxn];
    
    int main()
    {
        int n;
        char L[maxn],R[maxn],S[maxn];
        while(~scanf("%d",&n) && n>0)
        {
            while(n--)
            {
                int i,k=0;
                memset(Q,0,sizeof(Q));
                for(int l=0; l<3; l++)
                {
                    scanf("%s%s%s",L,R,S);
                    int x=strlen(L);
                    int y=strlen(R);
                    if(!strcmp(S,"even"))//都为真
                    {
                        for(i=0; i<x; i++)
                            Q[L[i]-'A'].even++;
                        for(i=0; i<y; i++)
                            Q[R[i]-'A'].even++;
                    }
                    if(!strcmp(S,"up"))//右重左轻
                    {
                        k++;//计数,用来判断在那一数组(轻 还是 重)
                        for(i=0; i<x; i++)
                            Q[L[i]-'A'].up++;
                        for(i=0; i<y; i++)
                            Q[R[i]-'A'].down++;
                    }
                    if(!strcmp(S,"down"))//右轻左重
                    {
                        k++;
                        for(i=0; i<x; i++)
                            Q[L[i]-'A'].down++;
                        for(i=0; i<y; i++)
                            Q[R[i]-'A'].up++;
                    }
                }
                for(int j=0; j<12; j++)
                {
                    if(!Q[j].even && Q[j].down==k)//轻假币
                    {
                        printf("%c is the counterfeit coin and it is light.
    ",j+'A');
                        break;
                    }
                    else if(!Q[j].even && Q[j].up==k)//重假币
                    {
                        printf("%c is the counterfeit coin and it is heavy.
    ",j+'A');
                        break;
                    }
    
                }
            }
        }
    
        return 0;
    }
    

      

      

    附带测试数据(注意:这组数据过了后在提交)

    sample input 
    12 
    ABCD EFGH even 
    ABCI EFJK up 
    ABIJ EFGH even 
    AGHL BDEC even 
    JKI ADE up 
    J K even 
    ABCDEF GHIJKL up 
    ABC DEF even 
    I J down 
    ABCDEF GHIJKL up 
    ABHLEF GDIJKC down 
    CD HA even 
    A B up 
    B A down 
    A C even 
    A B up 
    B C even 
    DEFG HIJL even 
    ABC DEJ down 
    ACH IEF down 
    AHK IDJ down 
    ABCD EFGH even 
    AB IJ even 
    A L down 
    EFA BGH down 
    EFC GHD even 
    BA EF down 
    A B up 
    A C up 
    L K even 
    ACEGIK BDFHJL up 
    ACEGIL BDFHJK down 
    ACEGLK BDFHJI down 
    ACEGIK BDFHJL up 
    ACEGIL BDFHJK down 
    ACEGLK BDFHJI up 
    
    sample output 
    K is the counterfeit coin and it is light. 
    I is the counterfeit coin and it is heavy. 
    I is the counterfeit coin and it is light. 
    L is the counterfeit coin and it is light. 
    B is the counterfeit coin and it is light. 
    A is the counterfeit coin and it is heavy. 
    A is the counterfeit coin and it is light. 
    L is the counterfeit coin and it is heavy. 
    A is the counterfeit coin and it is light. 
    A is the counterfeit coin and it is heavy. 
    L is the counterfeit coin and it is light. 
    K is the counterfeit coin and it is heavy.
    

      

      ……*_*……

  • 相关阅读:
    React入门实例
    【C语言】一些重要的知识点
    【C语言】字符串模块
    【C语言】指针模块
    贝尔曼福特算法
    dijkstra算法
    拓扑序列
    树和图的广度优先遍历
    树和图的深度优先遍历
    回溯剪枝,dfs,bfs
  • 原文地址:https://www.cnblogs.com/guoyongzhi/p/3233055.html
Copyright © 2011-2022 走看看