算法
文章平均质量分 65
usernamecontroled
这个作者很懒,什么都没留下…
展开
-
全排列的递归和非递归解法
输入n个整数,然后输出其全排列,如输入:3,输出:1 2 3 ,1 3 2 ,2 1 3 , 2 3 1 , 3 1 2 ,3 2 1.递归解法:思想:如2,3的全排列是以2开头的3的全排和以3开头2的全排,1,2,3的全排列是以1开头2 ,3的全排,以2开头1,3的全排和以3开头1,2的全排 。如此就可以用递归了。#include#includevoid print(in原创 2011-12-18 14:25:48 · 335 阅读 · 0 评论 -
整数的划分问题
将一个整数划分为几个正整数之和,如6可以划分为 :5+1 , 4+2 4+1+1 , 3+3 , 3+2+1 , 3+1+1+1 , 2+2+2 , 2+2+1+1 , 2+1+1+1+1 ,1+1+1+1+1+1 现任意输入一个正整数(1-10)输出它的划分(如6的划分一样)。#includeint a[10];void print(int *b){int原创 2011-12-12 20:27:30 · 376 阅读 · 0 评论 -
字符串中单词反转
比如字符串”hello, I am a student!“ ,将其反转成”student!a am I hello,”,不能使用字符串函数。思路:先将整个字符串反转,然后再将字符串中每个单词反转代码:#includevoid reverse(char *ch , int begin , int end);int main(){ char p[] = "I am a原创 2012-09-26 23:33:39 · 540 阅读 · 0 评论 -
判断字符串是否是IPV4
判断一个字符串是否是IPv4(不能用字符串函数)。 首先我们判断字符串的长度是否大于6且小于16,然后根据字符 ‘.’ 逐个划分字符串; 其次判断每个划分的长度是否大于0且小于4; 然后判断每个划分中每个字符是否大于等于字符‘0’且小于等于字符‘9’; 最后把每个划分转化成整数,判断其是否大于等于0且小于等于2原创 2012-09-26 23:25:27 · 1304 阅读 · 0 评论 -
求最长重复子串的长度
给定一个字符串,求最长重复子串的长度。(最长重复字串之间可以有重叠的部分,如ababa,最长重复子串为aba,长度为3)如果程序至多可以处理MAXN个字符,这些字符被存储在数组c中:#define MAXN 5000000char c[MAXN], *a[MAXN];在读取输入时,首先初始化a,这样,每个元素就都指向输入字符串中的相应字符:while (ch = getchar转载 2012-10-04 22:58:36 · 995 阅读 · 0 评论 -
对于一个入栈序列输出所有的出栈序列
网上有很多解法,但个人感觉不够清晰。下面本人献丑来写下自己的解法。力求简明易懂。首先这是个卡特兰数,学过组合数学的同学都知道。没学过的可以看下下面这个例子。有2n个人排成一队进入剧场。入场费5元。其中只有n个人有一张5元钞票,另外n人只有10元钞票,剧院无其它钞票可找零,问有多少中方法使得只要有10元的人买票,售票处就有5元的钞票找零?(将持5元者到达视作将5元入栈,持10元者到达视作使栈中某转载 2012-09-24 21:49:11 · 3913 阅读 · 0 评论