首页 > 其他分享 >洛谷题解-官方题单-递归与递推

洛谷题解-官方题单-递归与递推

时间:2024-04-25 23:35:06浏览次数:21  
标签:洛谷 递归 int 题解 long dfs 10000 fn 题单

P1255 数楼梯

原题链接

题目描述
楼梯有 N 阶,上楼可以一步上一阶,也可以一步上二阶。
编一个程序,计算共有多少种不同的走法。
对于60% 的数据,N≤50;
对于100% 的数据,1≤N≤5000。

思路:每次有2种方法上楼梯,要么上一阶,要么上二阶。

第一种:得50分的做法是可以用递归来解:

点击查看代码
int dfs(int n)
{
	if (n == 1) return 1;
	else if (n == 2) return 2;
	else dfs(n - 1) + dfs(n - 2);
}

数据小的时候用递归才可以AC

第二种:得60分做法是使用斐波拉契数列

点击查看代码
void solve()
{
	long long fn[5005];
	long long n;
	cin >> n;
	memset(fn, 0, sizeof(fn));
	fn[1] = 1;
	fn[2] = 2;
	for (long long i = 3; i <= n; i++) {
		fn[i] = fn[i - 1] + fn[i - 2];
	}
	cout << fn[n];
}
n>50时,使用高精度来解
点击查看代码
int main()
{
	cin >> n;
	int t = 1;
	int a[10000],b[10000],c[10000];
	a[1] = 1;
	b[1] = 2;
	if(n==1) cout<< 1;
	else if(n==2) cout << 2;
	else {
		for(int i = 3; i <= n; i ++){
			for(int i = 1; i <= t; i ++) c[i] = a[i] + b[i];
			for(int i = 1; i <= t; i ++) c[i+1] += c[i] /10,c[i] %= 10;
			if(c[t+1] != 0) t ++; 
			swap(a,b);
			swap(b,c);
			memset(c,0,sizeof(c));
		}
		for(int i = t; i >= 1; i--) cout << b[i];
	}
	cout << endl;
	return 0; 
}

标签:洛谷,递归,int,题解,long,dfs,10000,fn,题单
From: https://www.cnblogs.com/yingdaomayilsl/p/18158845

相关文章

  • [题解][2021浙江CCPC] Fair Distribution
    题目描述给定两个数n,m,每次操作可以让n-1或者m+1,求使m%n==0的最少操作数量。题解设进行n-t次操作,使n变成t。若m%t不为0,此时的操作数量为:n-t+t-m%t。若m%t==0,操作数量为n-t。那么只需要枚举t就可以解决此题。但会发现t的范围从1-n过大,考虑将t的范围限制在1-sqrt(m),且每次分别......
  • [题解]P5656 【模板】二元一次不定方程 (exgcd)
    P5656【模板】二元一次不定方程(exgcd)若存在\(ax+by=c\),则可以根据特解\(x,y\)求出任意通解\(x',y'\):\(\begin{cases}x'=x+k*\frac{b}{\gcd(a,b)}\\y'=y-k*\frac{a}{\gcd(a,b)}\end{cases}(k\in\mathbb{Z})\)求特解的方法是「扩展欧几里得(exgcd)」,如果没接触过可以先阅读......
  • [题解][2021浙江CCPC] String Freshman
    题目描述有一份错误的字符串匹配算法,计算S串里有几个T串(只要有一个元素不同,则视为不同的串)。现在输入T串,判断能否构造S串让该算法不通过。intFind_Answer(){intj=1,ans=0;for(inti=1;i<=n;i++){if(S[i]!=T[j])j=1;if(S[......
  • 洛谷题单指南-动态规划2-P2758 编辑距离
    原题链接:https://www.luogu.com.cn/problem/P2758题意解读:对a字符串最少操作几次可以变成b字符串,看似无从下手,可以从内部递推关系着手。解题思路:设dp[i][j]表示将a字符串1~i变成b字符串1~j的最少操作次数,字符串下标从1开始。如何思考递推?可以从最后一步为切入点!最后一步对a[i]......
  • 「实用」如何在洛谷上正确的抄题解
    前言看到这个标题,估计一群人又要开始躁动不安了……等一下,如果是洛谷的管理员看到了这篇文章,不要把我给封了,我是在教各位刚入门的小萌新,也就是以后的神犇们如何切水题呢!本文没有任何反对洛谷的意思,坚决支持kkk!好了,进入今天的正题,“如何在洛谷上正确的抄题解”这个标题直接概括......
  • [题解]CF61E Enemy is weak
    CF61EEnemyisweak如下图,第\(i\)行\(j\)列表示第\(j\)个数结尾,向前长度为\(i\)的逆序子序列个数。递推方式见下图。第一行全为\(1\)。要填第\(2\)行的值,就往前找所有\(>\)当前元素的位置,把它们第\(1\)行的值加起来。要填第\(3\)行的值,就往前找所有\(>\)当前元素的位置,把......
  • 「洛谷」题解:P1996 约瑟夫问题
    题目传送门先看题目:题目描述\(n\)个人围成一圈,从第一个人开始报数,数到\(m\)的人出列,再由下一个人重新从\(1\)开始报数,数到\(m\)的人再出圈,依次类推,直到所有的人都出圈,请输出依次出圈人的编号。注意:本题和《深入浅出-基础篇》上例题的表述稍有不同。书上表述是给出淘汰......
  • [题解] [NOIP2011 提高组] Mayan 游戏
    [题解][NOIP2011提高组]Mayan游戏题目描述有一个\(7\)行\(5\)列的格子棋盘,有的格子上有方块。方块有重力,即如果一个方块下面没有其他方块,他就会往下掉,直到触底或者下面有方块为止。每个方块都有自己的颜色,如果连着三个竖着或者横着的方块颜色相同,它们就会消除。如果出......
  • 洛谷题单指南-动态规划2-P1874 快速求和
    原题链接:https://www.luogu.com.cn/problem/P1874题意解读:一个数字字符串s,分解成几个整数,和为n,计算最少加号个数,也就是计算最少分解的整数个数-1。解题思路:此题虽然分类在动态规划,但数据量不大,DFS更加直观和易于理解,所以采用DFS暴搜+剪枝来解决。搜索思路是对数字字符串依次枚......
  • CF1774G Segment Covering 题解
    题目链接点击打开链接题目解法这么牛的题!!!我第一眼看到偶\(-\)奇想到的是LGV/xk有一堆线段的题先考虑有没有线段之间的特殊关系这道题中,如果有线段\(x\)包含线段\(y\),则线段\(x\)是无用的,因为如果选了\(x\),那么选不选\(y\)无所谓,因为是偶\(-\)奇,所以贡献抵消了......