c语言算法
文章平均质量分 66
Justdoforever
读书是为了更出色的人生!
展开
-
LeetCode 70 爬楼梯
设dp[i]为i+1层楼梯下爬楼梯情况的解,那到第i+1层有两种情况,如上图所示:1. 第i层走一阶,就是第i层的所有解情况基础上走一阶,即实质上解数还等于dp[i-1]的解个数1. 第i-1层走一阶,就是第i-1层的所有解情况基础上走二阶,即实质上解数还等于dp[i-2]的解个数所以动态方程:dp[i] = dp[i-1] + dp[i-2]代码如下:class Solution { public int climbStairs(int n) { ...原创 2020-12-06 21:03:34 · 65 阅读 · 0 评论 -
java ArrayList在递归的时候放到List容器中为空
力扣第39题class Solution { public List<List<Integer>> combinationSum(int[] candidates, int target) { List<List<Integer>> res = new ArrayList<>(); ArrayList<Integer> record = new ArrayList<Integer>原创 2020-11-27 11:11:44 · 752 阅读 · 0 评论 -
蛇形遍历
如果要打印的不是层次,而是蛇形遍历,又该如何实现呢?蛇形遍历就是 s 形遍历,即奇数层从左到右,偶数层从右到左。如果是例题 2 的树,则蛇形遍历的结果就是 16、20、13、10、15、22、26、21。我们就把这个问题当作本课时的练习题。#include<cstdlib>#include<cstdio>#include<stack>using namespace std;typedef struct BNode{ int data; struct B原创 2020-09-15 15:36:50 · 588 阅读 · 0 评论 -
查找两个有序数组合并后的中位数
例题 :查找两个有序数组合并后的中位数【题目】 两个有序数组查找合并之后的中位数。给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出这两个正序数组合在一起之后的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空,所有的数字全都不相等。还可以再假设,如果数字个数为偶数个,中位数就是中间偏左的那个元素。例如:nums1 = [1, 3, 5, 7, 9]nums2 = [2, 4, 8, 12]原创 2020-09-13 20:51:01 · 2059 阅读 · 0 评论 -
getline,gets区别
字符串输入 gets适用于已知长度字符串,getline()不限长度 且第三个参数表示为字符串终止条件,默认为回车#include<stack>#include<string>#include<iostream>using namespace std;int main(){ //字符串输入 gets适用于已知长度字符串,getline()不限长度 string s; getline(cin,s,'#'); printf("%s\n",s.c_s.原创 2020-09-05 16:14:08 · 1975 阅读 · 0 评论 -
实时查找数据流中的中位数
例题:查找数据流中的中位数【题目】 在一个流式数据中,查找中位数。如果是偶数个,则返回偏左边的那个元素。例如:输入 1,服务端收到 1,返回 1。输入 2,服务端收到 1、2,返回 1。输入 0,服务端收到 0、1、2,返回 1。输入 20,服务端收到 0、1、2、20,返回 1。输入 10,服务端收到 0、1、2、10、20,返回 2。输入 22,服务端收到 0、1、2、10、20、22,返回 2。【解析】 这道题目依旧是按照解决代码问题的方法论的步骤进行分析。先看一原创 2020-08-29 17:07:18 · 966 阅读 · 0 评论 -
动态规划——0/1背包
问题描述 有一个箱子容量为V(正整数,0<=V<=20000),同时有n个物品(0<n<=30),每个物品有一个体积(正整数)。 要求n个物品中,任取若干个装入箱内,使箱子的剩余空间为最小。输入格式 第一行为一个整数,表示箱子容量; 第二行为一个整数,表示有n个物品; 接下来n行,每行一个整数表示这n个物品的各自体积。输出格式 一个整数,表示箱子剩余空间。样例输入246...原创 2019-01-12 21:09:54 · 133 阅读 · 0 评论 -
动态规划-类似0 1背包
问题描述 辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值。我会给你一段时间,在这段时间里,你可以采到一些草药。如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最大。” 如果你...原创 2019-01-12 21:08:21 · 194 阅读 · 0 评论 -
静态链表实现Josephus(约瑟夫环问题)
问题描述 假设n个竞赛者排成一个环形。给定一个正整数m<=n,从指定的第一个人开始,沿环计数,每遇到第m个人就让其出列,且计数继续进行下去。这个问题一直进行到所有人都出列为止,最后出列者为优胜者。 例如:(7,3)Josephus排列为3,6,2,7,5,1,4.下面是代码:#include <cstdio>#include<iostream>...原创 2018-08-28 15:53:42 · 1935 阅读 · 0 评论 -
二叉树(二叉链表)求树的宽度,即具有结点树最多的那一层的结点个数
算法思想 采用层次遍历的思想。level为当前层数,last始终指向每层的最右结点,层次遍历出队一个元素和last指向的元素比较,若相同,层数加一,并将当前层数结点个数存到一个数组中,last指向下一层的最右结点。重复执行到队列为空时结束,然后在结点数数组中找到最大的结点数即为所求。 还可以采用以下思路,请读者自行编写程序。依然是采用层次遍历的方法,先求出所有结点的层次,并将所有结点...原创 2018-08-17 18:13:55 · 3760 阅读 · 0 评论 -
c语言实现二叉树(二叉链表)非递归后序遍历
算法思想因为后序遍历是先访问左子树,再访问右子树,最后访问根节点。当用栈实现遍历时,必须分清返回根节点时,是从左子树返回的还是从右子树返回的。所以使用辅助指针r指向最近已访问的结点。当然也可以在节点中增加一个标志域,记录是否已被访问。#include<iostream>using namespace std;typedef char ElemType;typedef ...原创 2018-08-14 18:18:15 · 3771 阅读 · 2 评论 -
c++穷举法求最大公约数和最小公倍数的实例中如何调用max和min函数
c++用max和min函数时首先要加上头文件 #include 再加上 using namespace std; 更关键的是要在调用时加上” _cpp_”,两个下划线 int min = _cpp_min(a,b); int max =_cpp_max(a,b);下面是例子:#include#includeusing namespace std;const long max原创 2017-09-17 18:31:14 · 1745 阅读 · 0 评论