06 2012 档案

摘要:http://dev.firnow.com/course/3_program/c++/cppjs/20090524/167795.html若规定最后取光石头的人输,又该如何应对呢(还有必胜的策略么?)?仍然用<1,1,1,1>这种形式来表示石头.仍然是你先取.如果是1块,你必输.如果是2块,你赢.你可以在边角取走一块,然后便成为:这时候只剩1块石头,对手先取.这样就成1块石头的情况,结果当然是对手输如果是3块,你赢.你可以在边角取走两块,然后便成为:这时候只剩1块石头,对手先取.......如果是4块,你必输.石头是<1,1,1,1>.如果你从边角取走一块或相邻两块,那 阅读全文
posted @ 2012-06-19 21:22 大兔子_快跑 阅读(400) 评论(0) 推荐(0)
摘要:8.2-2 证明COUNTING-SORT是稳定的。 问题解答: 假设输入数组A[1...n],length[A]=n,数组A中有两个元素具有相同的值,下标分别为a,b(1≤a<b≤n)即A[a] = A[b]。经过计数排序运行至行7,C[A[a]] = C[A[b]]。在第9~11行中循环部分中,循环变量 i用于指示数组A的下标,其值从 length[A] 到 1 递减遍历。由b>a可知,A[b]优先插入数组B中。在循环执行体行10、行11中,每当将一个值A[i]放入数组B位置C[A[i]]时,都要使C[A[i]]的值减1。因此,A[b]首先插入数组输出数组B中,且A[a]插入在 阅读全文
posted @ 2012-06-16 14:51 大兔子_快跑 阅读(2914) 评论(6) 推荐(0)
摘要:7.2-4 银行经常按照交易时间,来记录有关某一账户的交易情况,但是,很多人喜欢按照票据号来收到其银行对账单。因此,如何将按交易时间排序转换成按支票编号来排序,就成为一个对几乎排好序的输入进行排序的问题。证明在这个问题上,过程INSERT-SORT的性能往往优于过程QUIKSORT。 问题解析:对于QUIKSORT来说,输入一个已排序的数组属于最坏的情况,则每次区间划分都是最大程度的不对称。其算法运行的递归时间为T(n) = T(n-1) + Θ(n), 算法时间复杂度为Θ(n^2); 而对INSERT-SORT来说,输入一个已排序的数组却属于最佳的情况,算法时间复杂度为O(n)。也就是说当. 阅读全文
posted @ 2012-06-08 10:29 大兔子_快跑 阅读(2728) 评论(0) 推荐(0)
摘要:6.5-7 Heap-DELETE(A, i)操作结点i中的项从堆A中删去。对含n个元素的最大堆,请给出时间为O(lgn)的HEAP-DELETE的实现。 Heap-DELETE(A, i) del_val←A[i] ifi = heap-size[A] thenheap-size[A]← heap-size - 1 returndel_val HEAP-INCREASE-KEY(A, i, key) HEAP-EXTRACT-MAX(A) returndel_val6.5-8请给出一下时间为O(n*lgk),用来将 k 个已排序链表合并为一个排序链表... 阅读全文
posted @ 2012-06-02 11:27 大兔子_快跑 阅读(1469) 评论(0) 推荐(0)