keenlog

2011年9月4日

递归用法之“全排列算法”

简介: 用递归写出全排列算法也不简是什么新问题了,网上随便一搜就能发现很多。本文就其中的一种算法——个人认为代码量最少的一种——进行一些基本的解释,以便有兴趣的读者能理清思路,共同探讨递归的妙用。全排列的过程: 简单起见,我们假设只要对ABCD四个字母进行全排列操作。运用递归的方法我们先假想有一个函数P当输入是ABC时能对ABC进行全排列操作。在这个基础上我们可先把ABC输入函数P,那么我们得到一组以D结尾的排列{ABC}D,其中{ABC}在本文表示对ABC的全排列。然后让D和A进行交换,这样ABCD的次序就变成了DBCA;我们再把头三个字母DBC输入函数P,那么我们得到另一组以A结尾的排..

posted @ 2011-09-04 12:24 keenlog 阅读(1245) 评论(2) 推荐(0)

2011年9月3日

递归用法之“海盗分赃难题”

摘要: 海盗分赃难题: 十个海盗要瓜分100枚金币,为此他们拟定了以下规则。 从船长到厨子每个海盗由高到低共分十个等级,分配权在最高等级的海盗手里。他可以任意分配每个海盗的所得,但必须取得一半或一半以上海盗(包括自己在内)的支持,否则他将被同伴处死。处死之后分配权将转移到下一个等级最高的海盗手里,当然,他也将面临同样艰难的选择。 基于海盗们贪婪而凶残的本性,每个没有分配权的海盗都想分得更多的金币和处死自己的上级。但相对后者而言,多分得一枚金币也许更有吸引力。我们假定所有的海盗都是深思熟虑的老手,他们能精确地计算自己未来的得失,从而根据利益最大原则支持或反对上级的分配。 问:作为一号海盗的船长有... 阅读全文

posted @ 2011-09-03 20:00 keenlog 阅读(3017) 评论(1) 推荐(2)

< 2025年6月 >
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 1 2 3 4 5
6 7 8 9 10 11 12

导航

统计

点击右上角即可分享
微信分享提示