随笔分类 - C语言 / 算法
摘要:问题实例:跳格子 小明和朋友玩跳格子游戏,有n个连续格子,每个格子有不同的分数,小朋友可以选择以任意格子起跳,但是不能跳连续的格子,也不能回头跳;给定一个代表每个格子得分的非负整数数组,计算能够得到的最高分数。输入描述:给定一个数列,如:12311 < nums.length < 1000 <= n
阅读全文
摘要:实际使用中,DFS远多于BFS。如果只是为了遍历所有结点的话,那么DFS和BFS没什么差别,我们当然更倾向于更方便编写、空间复杂度更低的DFS遍历。 BFS应用场景:1.求最短路径(遇到的第一个解,一定就是最优解) DFS应用场景:1.迷宫问题(判断能否从A点走到B点这种问题) DFS搜索策略:从某
阅读全文
摘要:// 递归求5!// 基本递归 #include <stdio.h> int fun(int n) { if (1 == n) { return 1; } else { return n*fun(n-1); } } int main(int argc, char *argv[]) { int num
阅读全文
摘要:#include <stdio.h> int my_strnum(const char *str1, const char *str2) { int num = 0, str1_len = 0, str2_len = 0; const char *temp1 = str1; const char *
阅读全文
摘要:int main(int argc, char *argv[]) { char num[20] = {0}; int temp = 0; printf("请输入一个8进制数:"); gets(num); int i = 0; while (num[i] != '\0') { temp = temp*
阅读全文
摘要:/* 题目:输入两个正整数m和n,求其最大公约数和最小公倍数 程序分析: 1.最小公倍数=输入的两个数之积除于它们的最大公约数,关键是求出最大公约数; 2.求最大公约数用辗转相除法(又名欧几里德算法) 算法描述: 第一步:a ÷ b,令r为所得余数(0≤r 第二步:互换:置 a←b,b←r,并返回第
阅读全文
摘要:// 将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5 #include <stdio.h> int main() { int n; printf("输入一个正整数:"); scanf("%d", &n); for (int i = 2; i <= n; i++) { while
阅读全文