摘要: 在使用std::sort( first, last, Pred )的时候,第三个参数我想用自定义的比较函数。可是,我遇到了一下问题,在线求指导。 1 template< typename T > 2 void fun() 3 4 { 5 map< T, uint > data_count; //映射数据-出现次数 6 vector< T > data; //数据集 7 struct _less_by_count{ 8 bool operator()( const T& lhs, const T& rhs ) 9 ... 阅读全文
posted @ 2012-05-07 21:05 Newwayy 阅读(200) 评论(3) 推荐(1) 编辑
摘要: 今天,和一个朋友谈论了一个有趣的问题: 有1000个一模一样的瓶子,其中有999瓶是普通的水,有一瓶是毒药。任何喝下毒药的生物都会在一星期之后死亡。现在,你只有10只小白鼠和一星期的时间,如何检验出哪个瓶子里有毒药? 眨看之下,貌似:”有一堆砝码,有一个不准,最少几次称量可以找出这个砝码?“ 但这问题关键是:”你只有一次验证答案的机会!“ 不管你采取什么措施,你只能揭晓答案一次。 我是学计算机的,所以对数字比较敏感。210= 1024!所以,我先假设有1024个瓶子,其中只有1瓶毒药。 1. 将1024分成两个512,即512a和512b。从512a的各瓶中,各取1滴水,给1号小... 阅读全文
posted @ 2012-04-01 19:14 Newwayy 阅读(3664) 评论(25) 推荐(6) 编辑
摘要: 前天在亚马逊上买书,单张发票超过100(不管是200还是300)送20购物券(多次购买可重复优惠),我买了10本书,总价305(价格分别为:31.9,44.7,17.4,24.6,27,19.5,64.8,40.2,16.3,19.2),想最大优惠,能否组合成3次购买?更一般地:给出一个整型数组Arr和某整数A,请将Arr分成不同的组合,每个组合内数据之和不小于A,那么能划分成的组合数最多是多少?编程求出每个组合的元素。如我的购书组合为:(31.9+24.6+27+19.5=103.0),(44.7+17.4+40.2=102.3),(64.8+19.2+16.3=100.3) 阅读全文
posted @ 2011-12-23 10:08 Newwayy 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 问题叙述:*5.1-3 假设你希望以各1/2的概率输出0和1.你可以自由使用一个输出0或1的过程BIASED-RANDOM。它以概率p输出1,以概率1 - p输出0,其中 0 < p < 1,但是你并不知道p的值。给出一个利用BIASED-RANDOM作为子程序的算法,返回一个无偏向的结果,即以概率1/2返回0,以概率1/2返回1。作为p的函数,你的算法的期望运行时间是多少?算法分析: 已知BIASED-RANDOM可产生0和1,那么 1 - BIASED-RANDOM也产生1和0,且以1 - p的概率输出1,以p的概率输出0。 如果我们将1 - BIASED-RANDOM看... 阅读全文
posted @ 2011-11-25 18:51 Newwayy 阅读(635) 评论(5) 推荐(0) 编辑
摘要: 问题叙述:*5.1-2 描述RANDOM( a, b )过程的一种实现,它只调用RANDOM( 0, 1 )。作为a和b的函数,你的程序的期望运行时间是多少? 注:RANDOM( a, b )为产生a, a + 1, a + 2, ... , b的函数发生器,且产生各整数的概率相等,同为 1/( b - a + 1 )。例如,RANDOM( 0, 1 )以0.5的概率产生0,1 。算法分析: RANDOM( 0, 1 )产生的结果只有两种可能,即0和1;而RANDOM( a, b )却有b-a+1种可能,二者之间怎么映射成了本问题的关键! 二分思想: 利用RANDOM(... 阅读全文
posted @ 2011-11-25 10:11 Newwayy 阅读(431) 评论(2) 推荐(0) 编辑
摘要: 问题叙述:4-6 VLSI芯片测试 Diogenes教授有n个被认为是完全相同的VLSI芯片,原则上它们是可以互相测试的。教授的测试装置一次可测二片,当该装置中放有两片芯片时,每一片就对另一片作测试并报告其好坏。一个好的芯片总是能够报告另一片的好坏,但一个坏的芯片的结果是不可靠的。这样,每次测试的四种可能结果如下: A芯片报告 B芯片报告 结论 B是好的 A是好的 都是好的,或都是坏的 B是好的 A是坏的 至少一片是坏的 B是坏的 A是好的 至少一片是坏的... 阅读全文
posted @ 2011-11-08 20:38 Newwayy 阅读(584) 评论(0) 推荐(0) 编辑
摘要: 问题叙述: *2.3-7 请给出一个运行时间Θ(n lg n )的算法,使之能在给定一个由n个整数构成的集合S和另一个整数x时,判断出S中是否存在有两个其和等于x的元素。算法分析: 1)方法一:穷举 对于集合S,需要找出2个元素,其和为x。可以穷举S中任意2元素,求其和,若有和为x,返回true;若无,返回false。 1 bool is_sum_exist( vector< int > &S, int x ) 2 { 3 if( S.empty() ) 4 return false; 5 for( vector< int >::iterat... 阅读全文
posted @ 2011-11-08 20:13 Newwayy 阅读(411) 评论(0) 推荐(0) 编辑