
常见经典数学问题解决算法
CodeEvil
这个作者很懒,什么都没留下…
展开
-
关于矿泉水空瓶子和瓶盖兑换矿泉水的问题解决算法
问题大概描述:矿泉水1块钱1瓶,喝完以后,2个空瓶子可以换一瓶新矿泉水,4个瓶盖也可以换一瓶新矿泉水。问:花10块钱最后最多能得多少瓶矿泉水。钱不是问题,主要是考虑刚开始能买多少瓶矿泉水,这里是10瓶,既然写程序,就n瓶吧。大致思路如下:先把n个矿泉水全部拆分成空瓶和盖子,就是当前拥有的所有的空瓶和盖子。可以用while循环,结束条件是(经过一轮瓶子和瓶盖的兑换活动后)当前的兑换后原创 2017-12-27 12:08:57 · 6782 阅读 · 0 评论 -
求一个集合的所有子集问题
可以用递归法,也可以用二进制对比法递归法可以想象成二叉树,可选择的状态选项只有2个,有这个元素和没有这个元素,先一条道走到头,然后回溯一步,再走到头...也就是回溯法。递归法代码如下:void GetsubSet(int set[],bool have[],int length,int deepth = 0){ if(length == deepth) { cout << "原创 2018-01-05 12:29:02 · 1878 阅读 · 1 评论 -
排列与组合问题
这里利用了回溯思想:全排列相对简单,不过以下代码待优化,可以如果把数组换成链表,每挑出一个数,就把这个数删除,下一层就可以少遍历一次,不用使用visited[]数组来判断是否挑过它了,浪费时间,还浪费空间。void GetPermutation(int set[],int result[],int length,int deepth = 0){ if(deepth == length)原创 2018-01-05 19:40:07 · 226 阅读 · 0 评论 -
猴子吃香蕉过河问题分析与扩展
第一次接触这个题目是大学找工作时候的一次笔试,题干意思是说有一座桥长50m,桥的一端放着一堆香蕉总共100根,还有一只猴子,这只猴子想要过桥,但是每走1m就要吃一根香蕉(每移动1m要吃一根香蕉,否则饿死,就是这么矫情),并且猴子身上最多可以放50根香蕉,再多就被压死了。问:猴子最多可以把多少根香蕉搬到桥的另一端?乍一看觉得不太科学,觉得猴子搬不过去,搬过去数量为0,仔细考虑,猴子是可以往返搬运...原创 2018-04-17 10:15:43 · 2226 阅读 · 0 评论