C语言经典算法题
ITSheep
相信自己,做自己喜欢做的事情
展开
-
汉诺塔问题
#define _CRT_SECURE_NO_WARNINGS #include #include void move(char c1, char c2) { printf("%c --> %c\n", c1, c2); } void hanoi(int n, char one, char two, char three) { if (n == 1) { move(one, th原创 2014-10-23 00:15:41 · 303 阅读 · 0 评论 -
猴子分桃子
/* * 题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把 * 多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的 * 一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子? */ #include void ab(int *j, int n) { int t原创 2014-10-26 00:32:14 · 562 阅读 · 0 评论 -
猴子吃桃问题
/* 题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下 的一半零一个。到第 10 天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。 程序分析:采取逆向思维的方法,从后往前推断。 */ #include #include int main(void) { int原创 2014-10-24 23:04:35 · 319 阅读 · 0 评论 -
打印所有的水仙花数
/* 题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数 本身。例如:153 是一个“水仙花数”,因为 153=1 的三次方+5 的三次方+3 的三次方。 程序分析:利用 for 循环控制 100-999 个数,每个数分解出个位,十位,百位。 */ #include #include int main(void) { int i, x1,原创 2014-10-13 00:19:21 · 350 阅读 · 0 评论 -
求n个字符的全排列
/* * 对n个不同的字符进行全排列 * 算法思想: * 假设求 1234 的全排列 * ① 把 1 固定,234 求全排,进行递归排列,直到为一个元素,打印所有元素,最后恢复最初的排序 * ② 把 1 和 2 进行交换,把 2 固定,134 求全排列,直到为一个元素,打印所有元素,最后恢复最初的排序 * ③ 同上所示,直到把 4 作为第一个为止。 *原创 2014-10-29 21:00:45 · 1885 阅读 · 0 评论 -
KMP模式匹配算法
#include #include #include /* 求模式串T的的next函数值,并存入数组next中 */ void GetNextval(const char *T, int next[]) { int j = 0, k = -1; next[0] = -1; while (T[j] != '\0') { if (k == -1 || T[j] == T[k])原创 2014-10-13 14:39:34 · 272 阅读 · 0 评论 -
打印杨辉三角
/* * 程序分析: * 1 * 1 1 * 1 2 1 * 1 3 3 1 * 1 4 6 4 1 * 1 5 10 10 5 1 */ #include #include int main(void) { int a[10][10]; int i, j; for (i = 0; i < 10; i++) { a[i][0] = 1; a[i][i] =原创 2014-10-20 23:04:34 · 317 阅读 · 0 评论 -
打印出图形(菱形)
/* 题目:打印出如下图案(菱形) * *** ***** ******* ***** *** * 1.程序分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重 for 循环,第一层控制行,第二层控制列。 */ #include #include int main(void) { int i, j, k;原创 2014-10-20 15:50:55 · 620 阅读 · 0 评论 -
古典问题(兔子问题)
/* 题目:古典问题:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月 后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 程序分析:兔子的规律为数列 1,1,2,3,5,8,13,21.... */ #include #include int main(void) { long f1, f2; int i; f1 = f2 = 1;原创 2014-10-21 23:03:16 · 995 阅读 · 0 评论