条件枚举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;
}

文章结束给大家分享下程序员的一些笑话语录: 这年头的互联网真是娱乐了中国,网民们从各种各样的“门”里钻来钻去,又有好多“哥”好多“帝”,值得大家品味不已……网络经典语录,关于IT与互联网,经典与您分享!

--------------------------------- 原创文章 By
条件和枚举
---------------------------------

原文地址:https://www.cnblogs.com/jiangu66/p/3112829.html