![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
递归专题
递归是一种很重要的算法,递归是一种很重要的算法,递归是一种很重要的算法,递归是一种很重要的算法,递归是一种很重要的算法,
可拟雀
这个作者很懒,什么都没留下…
展开
-
递归vs循环
题目 题目背景 猪猪 Hanke 得到了一只鸡。 题目描述 猪猪 Hanke 特别喜欢吃烤鸡(本是同畜牲,相煎何太急!)Hanke 吃鸡很特别,为什么特别呢?因为他有 1010 种配料(芥末、孜然等),每种配料可以放 11 到 33 克,任意烤鸡的美味程度为所有配料质量之和。 现在, Hanke 想要知道,如果给你一个美味程度 nn ,请输出这 1010 种配料的所有搭配方案。 输入格式 一个正整数 nn,表示美味程度。 输出格式 第一行,方案总数。 第二行至结束,1010 个数,表示每种配料所放的质量,按原创 2021-02-06 22:17:19 · 106 阅读 · 0 评论 -
2021-01-23
#include <iostream> using namespace std; typedef int ElementType; long long sum = 0;//逆序数的个数 void MergeSort(int arr[], int tmp[],int L, int rightend);//归并排序 void MergeAndCountNum(int arr[], int tmp[], int L, int R, int rightend); //归并有序序列并计算逆序数的个数原创 2021-01-23 12:09:14 · 98 阅读 · 0 评论 -
2021-01-20
第一个c++文件之n皇后,递归类型` #include<iostream> #include<cmath> using namespace std; int N; int queenpos[100]; void NQueen(int k); int main(){ cin >> N; NQueen(0); return 0; } void NQueen(int k){ int i; if(k==N){ for(i=0;i<=N-1;i+原创 2021-01-20 10:26:56 · 61 阅读 · 0 评论 -
递归遇上辗转相除法
#include<stdio.h> int gcd(int x, int y) { if(y==0)return x;elsereturn gcd(y,y%x); }int main(){ int a,b; scanf("%d %d",&a,&b); printf("%d",gcd(a,b));} 把x做除数 y是被除数 ![graph TD; A-->B; B-->C;](https://img-blog.csdnimg.cn/20201224111603原创 2020-12-24 11:16:07 · 168 阅读 · 0 评论 -
用递归实现求字符串里
//递归实现求字符串里数字相乘(注意可以有字母) int digui(char m[],int sum,int xiabiao,int j){ if(xiabiao==j) return sum; //如果下标是j-1就返回,那么最后一个m[j-1]可不会被算进去 if(m[xiabiao]<=‘9’ && m[xiabiao]>=‘0’) return digui(m,sum*(m[xiabiao]-‘0’),xiabiao+1,j); else return digui(原创 2020-12-13 23:39:57 · 162 阅读 · 0 评论 -
高精度与二维数组
高精斐波那契数列 本题一看数据范围就知道是高精,很多人看到高精就不会了,因为高精确很好理解却很难打代码,这很让人头疼,其实不难,我将讲一个比较易懂实用的方法,希望对大家有所帮助上思路思路和斐波那契一样,不过特判a[0][1]=0a[1[1]=1,a[2][1]=1,之后,a[i][j]=a[i-1][j]+a[i-2][j],这是主要公式,为什么开二维数组呢,因为用到高精,一直循环到n,这是斐波那契的主要思路,难点在于如何打高精,接下来我将讲如何打高精的代码刚才提到的二维数组的第二维是进位用的,满十进一,每原创 2020-12-11 23:55:50 · 286 阅读 · 0 评论 -
递归好题
看到大家的题解都写到了卡特兰数,但是没有细细的讲讲这跟本题有什么关系 本题的描述十分简单。n个数依次进栈,可随机出栈。求有几种可能。 dfs可以解,但是递推仿佛好像如同看上去貌似更简单一些。 解释一下原理: 建立数组f。f[i]表示i个数的全部可能性。 f[0] = 1, f[1] = 1; //当然只有一个 设 x 为当前出栈序列的最后一个,则x有n种取值 由于x是最后一个出栈的,所以可以将已经出栈的数分成两部分 比x小 比x大 比x小的数有x-1个,所以这些数的全部出栈可能为f[x-1] 比x大的数有n原创 2020-12-11 23:53:12 · 86 阅读 · 0 评论