全部博文(43)
发布时间:2013-02-15 10:47:37
递归算法见:整数的所有不同分割数目--递归算法 思路:非递归与递归的思维顺序是互逆的,所以很容易写出以下代码。#include <stdio.h>#define MAX 1000int p[MAX][MAX]={0};int main(){ int n=2; int index_n,index_m; //initialize the p[n][1]=1.........【阅读全文】
发布时间:2013-02-15 09:59:14
问题描述:把一个正整数写成若干个正整数的和。比如4=3+1,2+2,2+1+1,1+1+1+1,再加上自己,就一共有5种分割方式。 思路:求解4的所有分割方式,实际上就是求分割中以4为最大值而且和为4的所有分割方式,可以用p[4][4]来表示。抽象出来,就是p[n][m],表示分割中以m为最大值而.........【阅读全文】
发布时间:2013-01-26 09:23:57
问题描述:列出一个集合的元素个数为k的所有子集。 思路:在字典顺序列出所有子集的基础上判断元素个数就可以了,比较简单。代码如下:#include <stdio.h> #define MAX 1000 int main() { int n=5; int set[MAX]={1}; int index=0; int c.........【阅读全文】
发布时间:2013-01-23 20:10:37
问题描述:以字典顺序产生所有排列。假定集合set是连续的并且按从小到大顺序排列好了的,并且有n个元素。 思路:算法的思路分成两个部分:A是递归产生以某个数字开头的排列,B是调用A来依次生成 1为第一位的所有排列,2为第一位的所有排列,....n为第一位的.........【阅读全文】
发布时间:2013-01-22 16:03:58
我觉得这是一个很巧秒的算法。思路非常直接,从代码里可以很容易看出来,再单步调试查看set数组的值就可以很清楚地明白算法的过程。 代码如下:#include <stdio.h> #define MAX 1000 int n=3; //the number of set element int set[MAX]={1,2.........【阅读全文】