0028-称硬币

问题描述

赛利有 12 枚银币。其中有 11 枚真币和 1 枚假币。假币看起来和真币没有区别,但是重量不同。但赛利不知道假币比真币轻还是重。于是他向朋友借了一架天平。朋友希望赛利称三次就能找出假币并且确定假币是轻是重。例如:如果赛利用天平称两枚硬币,发现天平平衡,说明两枚都是真的。如果赛利用一枚真币与另一枚银币比较,发现它比真币轻或重,说明它是假币。经过精心安排每次的称量,赛利保证在称三次后确定假币。

输入

程序有多个测试块,第一行是一个整数n,表示有n个测试块。每次测试块有三行,每行表示一次称量的结果。赛利事先将银币标号为 A-L。每次称量的结果用三个以空格隔开的字符串表示:天平左边放置的硬币 天平右边放置的硬币 平衡状态。其中平衡状态用"up'',"down'',或 "even''表示, 分别为右端高、右端低和平衡。天平左右的硬币数总是相等的。

输出

每个测试块输出一行,输出哪一个标号的银币是假币,并说明它比真币轻(light)还是重(heavy)。

输入样列

1
ABCD EFGH even
ABCI EFJK up
ABIJ EFGH even

输出样例

K is the counterfeit coin and it is light.

算法实现

using System;

namespace Questions{
    class Program{
        public static void Main(string[] args){
            int n = int.Parse(Console.ReadLine());
            while (n!=0)
            {
                n--;
                string input = Console.ReadLine();
                string[] data1 = input.Split(' ');
                input = Console.ReadLine();
                string[] data2 = input.Split(' ');
                input = Console.ReadLine();
                string[] data3 = input.Split(' ');
                char[] coin = new char[12];
                string[] dataTemp= {"","","" } ;
                int k = 0;
                if (data1[2].CompareTo("even") == 0)
                {
                    for (int i = 0; i < data1[0].Length; i++) {
                        bool flag = true;
                        for (int j = 0; j < k; j++) {
                            if (data1[0][i] == coin[j])
                            {
                                flag = false;
                                break;
                            }
                        }
                        if (flag) {
                            coin[k++] = data1[0][i];
                        }
                    }
                }
                else
                    dataTemp = data1;
                if (data2[2].CompareTo("even") == 0)
                {
                    for (int i = 0; i < data2[0].Length; i++)
                    {
                        bool flag = true;
                        for (int j = 0; j < k; j++)
                        {
                            if (data2[0][i] == coin[j])
                            {
                                flag = false;
                                break;
                            }
                        }
                        if (flag)
                        {
                            coin[k++] = data2[0][i];
                        }
                    }
                }
                else
                    dataTemp = data2;
                if (data3[2].CompareTo("even") == 0)
                {
                    for (int i = 0; i < data3[0].Length; i++)
                    {
                        bool flag = true;
                        for (int j = 0; j < k; j++)
                        {
                            if (data3[0][i] == coin[j])
                            {
                                flag = false;
                                break;
                            }
                        }
                        if (flag)
                        {
                            coin[k++] = data3[0][i];
                        }
                    }
                }
                else
                    dataTemp = data3;
                char temp=' ';
                string result="";
                for (int i = 0; i < dataTemp[0].Length; i++) {
                    bool flag=false;
                    for (int j = 0; j < k; j++) {
                        if (dataTemp[0][i] == coin[j])
                            flag = true;
                    }
                    if (!flag)
                    {
                        temp = dataTemp[0][i];
                        result = "left";
                    }
                }
                if (result.CompareTo("") == 0) {
                    for (int i = 0; i < dataTemp[1].Length; i++)
                    {
                        bool flag = false;
                        for (int j = 0; j < k; j++)
                        {
                            if (dataTemp[1][i] == coin[j])
                                flag = true;
                        }
                        if (!flag)
                        {
                            temp = dataTemp[1][i];
                            result = "right";
                        }
                    }
                }
                if (dataTemp[2].CompareTo("up") == 0) {
                    if (result.CompareTo("right") == 0)
                        result = "light";
                    else
                        result = "heavy";
                }
                else {
                    if (result.CompareTo("right") != 0)
                        result = "light";
                    else
                        result = "heavy";
                }
                Console.WriteLine("{0} is the counterfeit coin and it is {1}.", temp, result);
            }
            Console.ReadKey();
        }
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,444评论 4 365
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,867评论 1 298
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 110,157评论 0 248
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,312评论 0 214
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,673评论 3 289
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,802评论 1 223
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,010评论 2 315
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,743评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,470评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,696评论 2 250
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,187评论 1 262
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,538评论 3 258
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,188评论 3 240
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,127评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,902评论 0 198
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,889评论 2 283
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,741评论 2 274

推荐阅读更多精彩内容

  • 文章作者:Tyan博客:noahsnail.com | CSDN | 简书 1. 枚举 枚举是基于逐个尝试答案的一...
    SnailTyan阅读 834评论 0 0
  • 有12枚硬币。其中有11枚真币和1枚假币。假币和真 币重量不同,但不知道假币比真币轻还是重。现在,用一架天平称了这...
    夏天才爱睡觉阅读 748评论 0 0
  • 清晨,睡意正浓,突然,门被撞开,一个小人儿快速地窜了进来,又飞速地跳上我的床,熟练地爬到我身旁,把脸埋在了我的被子...
    贪睡的木棉阅读 83评论 0 1
  • 1.吃饭的时候,沛沛突然说了一句:哥哥不见妈妈了…我努力回想这几天发生的事,知道她说的是《尼尔斯骑鹅历险记》里面尼...
    豆豆是个妈阅读 142评论 0 0