递归
Jaster_wisdom
程序员
展开
-
HDU 1007 (分治递归)
之前做这题用了 讨巧的 方法,竟然也 accept 了,后来举出反例发现 那种解法有问题。正确解法:运用分治递归的思想,首先将 所有的点 按照x的大小顺序排好,相同的话,参照y的大小。 然后取中间的 一个点 作为分割线。这时,结果可能有三种情况,第一,最短的点对 在 分割线 左边;第二,最短点对 在 分割线 右边; 第三,最短点对 跨越了 分割线,一左一右。分别求出左边 和 右边原创 2016-02-07 14:33:40 · 726 阅读 · 0 评论 -
LeetCode77. 组合
题目大意:求出1~n中所有可能的k个数的组合。题目分析:本题使用递归求解比较简单,当固定第一个数“1”时,就相当于求解后面2~n中所有可能的k-1组合,然后一直到k等于0,表示一种组合情况已经得到,保存到res中即可。代码展示:class Solution {public: vector<vector<int>> combine(int n, int...原创 2018-07-17 22:04:16 · 466 阅读 · 0 评论 -
LeetCode94. 二叉树的中序遍历
递归代码展示:/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; ...原创 2018-07-04 21:22:05 · 900 阅读 · 0 评论 -
Leetcode46. 全排列
题目大意:求出一个序列的全排列题目分析:全排列问题都可以用递归的方式来解决,将第一个数分别与后面的每一个数交换,然后对后面的数进行全排列。全排列问题的模板如下:#include <iostream>using namespace std;void Perm(char s[], int m,int n){ if(m==n){ for(int i=0;i<...原创 2018-06-10 22:01:36 · 835 阅读 · 1 评论 -
LeetCode40. 组合总和II
题目大意:给定一个数组,和一个目标值,找出数组中所有可以使数字和为target的组合。数组中的数字可以重复,并且每个元素只能使用一次。题目分析:本题和LeetCode39. 组合总和很类似,唯一的区别在于每个元素不能无限制地取。所以我们只要在递归的时候将参数改成从后一个元素开始递归。同时,同一位置上的元素不能重复,例如说,有一种情况是(?,?,?,?),表示有四个元素的组合情况,其中第一位置上的?...原创 2018-06-13 20:11:40 · 1481 阅读 · 0 评论 -
LeetCode39. 组合总和
题目大意:给定一个数组和一个目标值,返回数组内可以使数字和为target的组合,注意数组内的数字可以重复选,但是组合的结果要求不能重复。题目分析:本题采用递归较容易解答。首先,将数组内的元素由小到大排序,然后不断地进行试探,直到和为target。若当前和小于target,则继续往里面加元素;若当前和等于target,就可以将结果保留下来;若当前和已经大于target,那就可以排除掉这种情况,回溯到...原创 2018-06-13 19:31:59 · 3438 阅读 · 3 评论 -
LeetCode22. 括号生成
题目大意:给定n表示括号的对数,输出所有有效的括号的组合题目分析:递归求解,用leftnum和rightnum分别表示剩余可用的左括号和右括号的个数,当使用了一个( ,则leftnum-1; 同理,使用了一个 ),则rightnum-1。 当leftnum>0时,可用( 填充; 当leftnum<rightnum,并且rightnum>0时,表示当前可用 )填充,直到leftnu...原创 2018-06-05 20:43:32 · 538 阅读 · 0 评论 -
蓝桥杯-未名湖边的烦恼 (递归和递推解法)
题目大意:有一群人要还鞋,一群人要租鞋。还鞋的每个人叫做A,租鞋的人叫做B,每个A和每个B之间没有区别。求出有多少种排序方法,使得不会出现租鞋不够用的情况?分析:每一种合理的排序方法必须满足:无论截止到哪个人,在他前面并且包括他,还鞋的人必须大于等于租鞋的人的数量。解法1:递归法当第i个人要去排队时发现,另一类人已经全部排完了,那么解法只有一种了。比如:一个A去排队时,所有的B已经拍好了,那么所有...原创 2018-03-21 15:08:34 · 864 阅读 · 2 评论 -
蓝桥杯-2的次幂表示
问题描述:任意整数都可以用二进制表示,比如:137的2进制表示为10001001 可得到如下表达式:137=2^7+2^3+2^0。 进而可以表示成:2(7)+2(3)+2(0) 而7又可以表示成2(2)+2+2(0),3可以表示 成2+2(0) 所以137可以表示成:2(2(2+2(0))+2)+2(2(2+2(...原创 2018-03-06 19:58:24 · 490 阅读 · 0 评论 -
LeetCode90. 子集II
题目:给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: [1,2,2]输出:[ [2], [1], [1,2,2], [2,2], [1,2], []]题目分析:首先将nums数组排序,然后使用DFS深度遍历,在同一个for循环中,遇到和之前一样的数字则跳过。代码展示...原创 2018-07-19 18:16:39 · 603 阅读 · 0 评论