
递归和分治
K.Irving
这个作者很懒,什么都没留下…
展开
-
Hanoi塔问题
hanoi(n,a,b,c)表示将塔座a的自下而上,由大到小叠放在一起的n个圆盘依移动规则移到b,摆放顺序不变,且c作为辅助 void hanoi(intn, int a, int b, int c) { if (n > 0) { hanoi(n - 1, a, c, b); move(a, b); hanoi(n - 1, c, b, a); } } ...原创 2021-01-07 12:28:07 · 279 阅读 · 1 评论 -
整数划分问题 递归
将整数n划分,划分时最大可用的数为m int q(int n, int m) { if ((n < 1 || (m < 1))) return 0; if ((n == 1) || (m == 1)) return 1; if (n < m) return q(n, n); if (n == m) return q(n, m - 1) + q(n - m, m); return q(n, m - 1) + q(n - m, m); /原创 2021-01-07 12:17:15 · 130 阅读 · 0 评论 -
全排列问题 递归
设计一个Perm函数,产生list[k:m]的所有全排列 Perm(list[], int k, int m) //求list[k:m]的全排列 { if (k == m) { for (int i = 0; i < m; i++) cout << list[i]; cout << endl; } else { for (int i = k; i < m; i++) { swap(list[i],原创 2021-01-07 11:02:56 · 330 阅读 · 0 评论