初学c语言第一天,毒狗题目。

本文介绍了一种利用二进制原理解决复杂问题的方法:如何通过10只狗找出1000瓶药水中唯一的一瓶有毒药水。通过给每瓶药水编号并转换为二进制形式,再根据二进制位上的0或1决定是否让对应的狗饮用该瓶药水。最终,根据狗的生死状况即可确定有毒药水的具体编号。

今天学习了二进制的相关知识。

经典题目:用十条狗找出1000瓶药水中有毒的那一瓶.

思路:10只狗,喝了药水之后第二天只有存在和挂掉两种情况,我们用计算机二进制里面的0和1来进行模拟,1代表喝、0代表不喝,对于每一瓶药, 这10只狗的喝的pattern如下。

【  二进制映射喝法:0000000001对应十进制编号第1瓶药水  】
【  二进制映射喝法:0000000010对应十进制编号第2瓶药水  】
【  二进制映射喝法:0000000011对应十进制编号第3瓶药水  】
【  二进制映射喝法:0000000100对应十进制编号第4瓶药水  】
【  二进制映射喝法:0000000101对应十进制编号第5瓶药水  】
【  二进制映射喝法:0000000110对应十进制编号第6瓶药水  】
【  二进制映射喝法:0000000111对应十进制编号第7瓶药水  】
【  二进制映射喝法:0000001000对应十进制编号第8瓶药水  】
【  二进制映射喝法:0000001001对应十进制编号第9瓶药水  】
【  二进制映射喝法:0000001010对应十进制编号第10瓶药水  】
【  二进制映射喝法:0000001011对应十进制编号第11瓶药水  】
【  二进制映射喝法:0000001100对应十进制编号第12瓶药水  】
【  二进制映射喝法:0000001101对应十进制编号第13瓶药水  】
【  二进制映射喝法:0000001110对应十进制编号第14瓶药水  】
【  二进制映射喝法:0000001111对应十进制编号第15瓶药水  】
【  二进制映射喝法:0000010000对应十进制编号第16瓶药水  】


思路:

每个二进制都是独一无二的,10条狗可以找出2的10次方瓶药水,那就是1024,所以10条狗找1000品药水绰绰有余;

给每一瓶药水都编号(1.2.3......100).然后转换成二进制的表示方法(00001.0010等等);

然后按照二进制来给狗喂药,遇到0就不给这条狗喝药,遇到1就给对应的狗喝药;

第二天毒药发作,没死的狗就是0,死了的狗就是1,这样按照顺利数下来,然后转为十进制就知道是哪一瓶药水了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值