03 2010 档案

poj 1416 Shredding Company 碎纸机
摘要:题意是将一个数字划分为几个数字,使得这几个数字的和尽可能接近一个给定的目标数。如果所有的划分都大于目标数,就输出error,如果有多种划分情况使得和最大,则输出rejected。一开始的想法是先考虑划分的个数,比如一个6位数,划分为6个数的话,这6个数的和如果大于目标数则不用再搜索了,因为这肯定是所有划分中和最小的,而最小都比目标数大,自然就没有合要求的答案了。由这个想法就用了迭代加深的回溯算法去... 阅读全文
posted @ 2010-03-26 23:07 ChimeraPanda 阅读(780) 评论(0) 推荐(1)
大整数类(五)- 乘除法及模运算
摘要:跟加减法一样都是先实现*=、/=、%=再实现*、/、%。乘法的基本思路也是模拟笔算,不过在编程实现中并不急于处理进位,而是计算出所有部分和之后再一次过处理进位,所以里面用到一个unsigned int的向量,如果用string的话,由于char的范围太小,很容易溢出。除法用的是非常笨的方法,基本思想就是重复做减法,实际上就是一个试商的过程,只不过不是用乘来试商,而是用减法,用被除数的一截截去减除数... 阅读全文
posted @ 2010-03-18 18:03 ChimeraPanda 阅读(817) 评论(0) 推荐(0)
大整数类(四)- 加减法及++、--操作符的重载
摘要:用的是最基本的算法——模拟笔算。先实现无符号的加减法两个私有函数,再重载+=、-=操作符,最后用+=、-=分别实现+、-操作。如果先实现+、-,再用+、-实现+=、-=,则+=、-=需要多赋值一次,不如前面的方案好。 ++、--操作符分前缀和后缀,为了可以区分重载,后缀++、--的参数列表不为空,而是用一个int来使得参数列表非空,这个参数没有名字,也即仅起到区分作用,函数中不会使用这个参数。前缀... 阅读全文
posted @ 2010-03-11 21:37 ChimeraPanda 阅读(742) 评论(0) 推荐(0)