2006年十一月

小不点猪居然抠了一个晚上的手指头

    躲在后面桌子上,抠了一个晚上手指头,7:00我看她看到206页,刚才一看,居然看到204页了,真拿她没办法,^_^    这几天都没让她吃肉,晚上买了个油饼给她吃,后来抢了她1/3吃了,俺要让她体会劳动之辛苦,革命之不易。

[转]小说《输赢》之序

人生本是过程,结果并不重要。

一位老人带着爱犬行走在乡间小路,看着沿路的风景,突然间老人意识到自己已经离开了人世。他不知道这条路通往何方,只是茫然地向前走着。走了一段路程,只见前面高耸着大理石的围墙,围墙的中间是流光谥彩的拱门,上面装饰着各种珠宝,门前的道路由金砖铺就。老人兴奋不已,他想自己终于到了天堂,带着狗走到门前,遇到了看门人。

“请问,这里是天堂吗?”老人问道。“是的,先生。”看门人回答。“太好了,里面一定有水喝吧?我们已经赶了很远的路。”“当然有,进来吧,我马上给你水。”看门人缓慢地推开大门。“我的朋友可以一起进来吗?”老人指着狗问。“对不起,我们这里不允许宠物进入。”

老人沉默了一会儿,想到狗多年来对自己的忠诚,自己不可能这样扔下它。他谢过看门人,带着狗继续前进。长途跋涉之后,老人看到路边破烂的木门,通向木门的是坑坑洼洼的土路。老人带着狗过去,看见一个人在树下看书。“打扰一下,”老人对看书的人说:“请问,你这里有水喝吗?我们很渴。”

“当然,那边有水龙头,你可以喝个痛快。”看书人指着门内说。“我的朋友可以进去吗?”老人指着自己的狗问。“欢迎。”看书人说。

老人带着狗进了大门,老式的水龙头旁边有一个碗。老人先用碗盛了满满一碗水,让狗喝个痛快,然后自己又重新加满,也喝了个够。他们满足地离开水龙头,回到看书人的旁边。 “这是什么地方?”老人问。“这里是天堂。”看书人回答。“呃,这可奇怪了,这一点也不像啊,而且我们刚路过天堂。”“你说的是那个黄金铺地、有漂亮的拱门的地方吗?”“对,那里非常漂亮。”“告诉你吧,那是地狱。”“原来这样,你为什么不介意他们盗用天堂的名义呢?”

“当然不,他们为我们省了很多时间,替我们把那些为了自己利益而舍弃自己良心和原则的人都挑走了。”

组合问题的解决方案——回溯法

       回溯法也称为试探法,该方法首先暂时放弃关于问题规模大小的限制,并将问题的候选解按某种顺序逐一枚举和检验。当发现当前候选解不可能是解时,就选择下一个候选解;倘若当前候选解除了还不满足问题规模要求外,满足所有其他要求时,继续扩大当前候选解的规模,并继续试探。如果当前候选解满足包括问题规模在内的所有要求时,该候选解就是问题的一个解。在回溯法中,放弃当前候选解,寻找下一个候选解的过程称为回溯。扩大当前候选解的规模,以继续试探的过程称为向前试探。

       回溯法的一般流程和技术

       在用回溯法求解有关问题的过程中,一般是一边建树,一边遍历该树。在回溯法中我们一般采用非递归方法。下面,我们给出回溯法的非递归算法的一般流程:

       在用回溯法求解问题,也即在遍历状态空间树的过程中,如果采用非递归方法,则我们一般要用到栈的数据结构。这时,不仅可以用栈来表示正在遍历的树的结点,而且可以很方便地表示建立孩子结点和回溯过程。

      【问题】 组合问题

       问题描述:找出从自然数1,2,…,n中任取r个数的所有组合。

       采用回溯法找问题的解,将找到的组合以从小到大顺序存于a[0],a[1],…,a[r-1]中,组合的元素满足以下性质:

       (1) a[i+1]>a[i],后一个数字比前一个大;

       (2) a[i]-i[color=Red]/* m代表可选数字个数,从1开始[1...m],r代表组合数字的个数 */void combine3(int m, int r){    int *a = new int[r];    memset(a, 0, r * sizeof(int));     a[0] = 1;    int i = 0;     while (1)    {        // 达到规模,输出结果        if (a[i] – i = r – 1)         {             for (int t = 0; t < r; t++)             {                 cout [color]