算法:正面硬币

题目描述:

有100枚硬币躺在桌子上, 每一枚都有正面和反面。其中10枚正面朝上,90枚反面朝上你不能摸、看或者其他方法来判断每一枚硬币哪面朝上。现在把硬币分成两堆,使得每一堆都有同样数量的正面向上的硬币。

思路(假设解题过程都是闭着眼睛):将硬币分成两堆,一堆10个,另一堆90个,然后将10的小堆全部翻面。

证明:

假设第一次分堆后:

小堆:有x个正面朝上,10-x个反面朝上,

大堆:有10-x个正面朝上,90-10+x=80+x个反面朝上。

小堆全部翻面:

小堆:有10-x个正面朝上,x个反面朝上,

大堆:有10-x个正面朝上,90-10+x=80+x个反面朝上。

时间: 2024-10-25 23:51:55

算法:正面硬币的相关文章

十一:贪心算法-寻找硬币

问题:贪心算法-寻找硬币题目描述现有价值分别为:1 3 5 10的硬币若干.请用最少的硬币数量找出n(n<100000000)元钱.输入一个数字,表示要找出的钱的数量输出一个数字,表示需要多少硬币样例输入14样例输出 3 1 #include<stdio.h> 2 #include<stdlib.h> 3 long k=100000000; 4 int a[4]={1,3,5,10}; 5 void fun(int n,int m,int sum){ 6 int i; 7 i

贪心算法解硬币找零问题

假如有一种货币,它有面值为1分.2分.5分和1角的硬币,最少需要多少个硬币来找出K分钱的零钱? 按照贪心算法的思想,需要不断地使用面值最大的硬币.如果要找零的值小于最大的硬币值,则尝试第二大的硬币,依次类推. 代码如下: #include <iostream> using namespace std; #define ONE 1 #define TWO 2 #define FIVE 5 #define TEN 10 int main() { int money; int one=0,two=0

[经典算法] 八枚硬币

题目说明: 现有八枚银币a b c d e f g h,已知其中一枚是假币,其重量不同于真币,但不知是较轻或较重,如何使用天平以最少的比较次数,决定出哪枚是假币,并得知假币比真币较轻或较重. 题目解析: 单就求假币的问题是不难,但问题限制使用最少的比较次数,所以我们不能以单纯的回圈比较来求解,我们可以使用决策树(decision tree),使用分析与树状图来协助求解.一个简单的状况是这样的,我们比较a+b+c与d+e+f ,如果相等,则假币必是g或h,我们先比较g或h哪个较重,如果g较重,再与

C语言之基本算法28—硬币抛投(随机数)

//硬币抛投(随机数) /* ===================================================================== 题目:抛投两枚硬币,试分析共有几种情况,概率分别为多少? ===================================================================== */ #include<stdio.h> #include<iomanip> #include<ctime>

算法笔记——硬币找零之最少硬币数

题目来源:NYOJ995 问题描述: 在现实生活中,我们经常遇到硬币找零的问题,例如,在发工资时,财务人员就需要计算最少的找零硬币数,以便他们能从银行拿回最少的硬币数,并保证能用这些硬币发工资. 我们应该注意到,人民币的硬币系统是 100,50,20,10,5,2,1,0.5,0.2,0.1,0.05, 0.02,0.01 元,采用这些硬币我们可以对任何一个工资数用贪心算法求出其最少硬币数. 但不幸的是: 我们可能没有这样一种好的硬币系统, 因此用贪心算法不能求出最少的硬币数,甚至有些金钱总数还

博弈——翻硬币游戏

转自:http://blog.sina.com.cn/s/blog_8f06da99010125ol.html 翻硬币游戏 一般的翻硬币游戏的规则是这样的: N 枚硬币排成一排,有的正面朝上,有的反面朝上.我们从左开始对硬币按1 到N 编号. 第一,游戏者根据某些约束翻硬币,但他所翻动的硬币中,最右边那个硬币的必须是从正面翻到反面.例如,只能翻3个硬币的情况,那么第三个硬币必须是从正面翻到反面.如果局面是正正反,那就不能翻硬币了,因为第三个是反的. 第二,谁不能翻谁输. 有这样的结论:局面的SG

C语言值基本算法43—总结

C程序的基本算法共涵盖42个例题,包含了枚举.排列.逻辑判断.迭代.递推.字符串操作.矩阵操作.格式输出等内容. 相关的实现方法有的显得很笨拙,但足够说明问题,而且每个程序都经过作者亲测,保证可以运行.之所以称之为基本算法,就是为了测试基础知识的掌握,都是从原始的角度进行处理,没有运用过于花哨的处理技巧,作者也是在学习中进步,也希望这些代码对于没有基础或者基础薄弱的朋友带来帮助. 至此,基本知识就掌握了,我们常常会听说C的强大,因为它是面向过程的,在数学领域具有极好的应用,有必要进行进一步的学习

贪心算法——找零钱问题

//贪心算法 //有三种硬币:10,5,1:给定num元,以最少的硬币数来换它 function greedy(num){ var n10=0, n5=0, n1=0; if(num>=10){ n10= Math.floor(num/10); num= num%10; } if(num>=5){ n5= Math.floor(num/5); num= num%5; } if(num<5){ n1= num; } console.log('10元:'+n10+'枚 5元:' + n5+

抛硬币 Flipping Coins(Gym - 101606F)

Here's a jolly and simple game: line up a row of N identical coins, all with the heads facing down onto the table and the tails upwards, and for exactly K times take one of the coins, toss it into the air, and replace it as it lands either heads-up o