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

    题意:有A-L个标号的硬币,其中有一个是假币,你不知道假币的轻重,现在给你三个字符串,up代表右面轻,down右面重,even代表两面相等,找出假币并且判断轻重

    思路:因为只有A-L个硬币所以枚举一下,假设A是假币,然后判断一下是否满足那三个条件,满足条件的保存

    怎么是满足条件,除了不满足条件的,剩下的都满足条件。

    不满足条件的

    1.两面相等的字符串出现假币,说明假设不成立。

    2.右面轻的字符串出现假币在左面轻或者在右面重,说明假设也不成立。

    3.右面重的字符串出现假币在左面中或者在右面轻,说明假设也不成立。

    不满足上面条件就是假币。

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    char L[3][10];
    char R[3][10];
    char heav[3][10];
    struct coin
    {
        char c;
        int flag;
    };
    int main()
    {
        int t;
        scanf("%d",&t);
        while(t--)
        {
            int i,j;
            for(i = 0; i < 3; i++)
            {
                scanf("%s%s%s",L[i],R[i],heav[i]);
            }
            coin a;a.c = 'A',a.flag = -1;
            int f;
            for(i = 0; i < 12; i++)
            {
                int flag_L = 0,flag_R = 0;f = -1;
                for(j = 0; j < 3; j++)
                {
                    flag_L = 0,flag_R = 0;
                    int len;
                    int len_L = strlen(L[j]),len_R = strlen(R[j]);
                    for(len = 0; len < len_L; len++)
                    {
                        if((i+'A') == L[j][len])
                            flag_L = 1;
                    }
                    for(len = 0; len < len_R; len++)
                    {
                        if((i+'A') == R[j][len])
                            flag_R = 1;
                    }
                    if(strcmp(heav[j],"even") == 0 )
                    {
                        if(flag_L || flag_R)
                        {
                            break;
                        }
                    }
                    else if(strcmp(heav[j],"up") == 0)
                    {//printf("%c\n",i+'A');
                        if(flag_R && f == 0)
                            break;
                        if(flag_L && f == 1)
                            break;
                        if(!flag_R && !flag_L)
                            break;
                        if(flag_R)
                         {
                            f = 1;
                        }
                        else if(flag_L)
                        {
                            f = 0;
                        }
                    }
                    else if(strcmp(heav[j],"down") == 0)
                    {
                        if(flag_L && f == 0)
                            break;
                        if(flag_R && f == 1)
                            break;
                        if(!flag_R && !flag_L)
                            break;
                        if(flag_L)
                        {
                            f = 1;
                        }
                        if(flag_R)
                        {
                            f = 0;
                        }
                    }
                }
                if(j == 3)
                {
                    a.c = i+'A';
                    a.flag = f;
                }
            }
            if(a.flag == 0)
                printf("%c is the counterfeit coin and it is heavy.\n",a.c);
            else
                printf("%c is the counterfeit coin and it is light.\n",a.c);
        }
        return 0;
    }
    


  • 相关阅读:
    数据挖掘、数据分析的书籍推荐
    跳槽时间如何选择
    求职网站总结
    Eclipse中Applet程序运行时Applet小程序大小的设置
    统计学习导论:基于R应用——第五章习题
    统计学习导论:基于R应用——第四章习题
    统计学习导论:基于R应用——第三章习题
    Windows环境下安装IPython NoteBook
    centos7上mysql无法启动也没有日志
    CentOS 6.4下Squid代理服务器的安装与配置
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3111209.html
Copyright © 2011-2022 走看看