
递推
notmuch
这个作者很懒,什么都没留下…
展开
-
杭电ACM——2048(递推)
这道题是一道有关递推的题,同时也涉及到错排,其递推关系式如下(同时也是错排公式):f(2)=1; f(3)=2;f(n)=(n-1)*(f(n-1)+f(n-2)), n>=3;代码如下:#include<cstdio>using namespace std;int main(){ int n,k; double a[25],b[25]; int i; b[...原创 2019-03-07 13:14:58 · 489 阅读 · 0 评论 -
HDU2068,RPG的错排(错排+组合数)
枚举猜对(n+1)/2, (n+1)/2+1, … , n-3, 个人的情况,用组合数+错排公式求出,原理就是设你猜对了k个人,先从这n个人里面挑出k个人出来,就是C(n,k),在对剩余的n-k个人错排,就是(n-k-1) * (a[n-k-1] + a[n-k-2])(a[]为错排数列),总的就是C(n,k) * (n-k-1) * (a[n-k-1]+a[n-k-2])种情况,然后对k在[(n...原创 2019-08-09 23:03:10 · 214 阅读 · 0 评论 -
杭电ACM——2085,核反应堆(递推)
突破口:设i秒高能粒子,低能粒子的数量分别为h[i],l[i],h[0]=1,l[0]=0;h[i]=3×h[i-1]+2×l[i-1], l[i]=h[i-1]+l[i-1].代码如下:#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>#in...原创 2019-05-05 17:39:48 · 516 阅读 · 0 评论 -
杭电ACM——2077,汉诺塔IV(递推/思维)
突破口:既然是汉诺塔,那就非常有可能与原来的汉诺塔问题有联系,手动推出n=1,2,3,4的移动次数分别为2,4,10,28,而原汉诺塔问题n=1,2,3时分别为2,8,26,有什么发现呢?假设原汉诺塔的数列为x1[20],现汉诺塔的数列为x2[20],那么x2[i]=x1[i-1]+2。代码如下:#include<cstdio>#include<iostream>...原创 2019-05-05 17:25:47 · 625 阅读 · 0 评论 -
杭电ACM——2064,汉诺塔III(递推)
突破口:有n个盘子,先将上面n-1个盘子移动最右边,f(n-1)次,再将第n个最下面的盘子移到第二根柱子,再将最右边n-1个移动到最左边,f(n-1)次,再将第n个盘子移到最右边,最后将n-1个盘子又移动到最右边,f(n-1)次,则f(n)=3*f(n-1)+2。代码如下:#include<cstdio>#include<iostream>#include<a...原创 2019-04-04 21:49:09 · 399 阅读 · 0 评论 -
杭电ACM——1297,Children’s Queue(递推)
递推公式:f[n]=f[n-1]+f[n-2]+f[n-4];突破口:如何得到递推公式,主要是最后一个f[n-4],这个稍作解释,假如第n,n-1个都是女孩,也就是n-2个人都站好了以后,末尾再插上两个女孩,这个时候,本来以MF结尾的站法是不合法的,但是由于插上了两个FF,成了MFFF,使得这种站法成了合法的,因此这时就相当于将MFFF插到n-4个人排好之后的合法队列后方,因此加上f[n-4]。...原创 2019-03-19 23:16:21 · 442 阅读 · 0 评论 -
杭电ACM--2018(递推)
emmmmmm…一道水题,结果还是弄错了,把递推公式弄错了,结果一直WA。正确题解如下:#include&lt;cstdio&gt;using namespace std;int a[60];int main(){int n;int i;for(i=1;i&lt;=59;i++){if(i&lt;=4) a[i]=i;else a[i]=a[i-1]+a[i-3];//if...原创 2019-03-07 13:11:21 · 225 阅读 · 0 评论 -
杭电ACM——2050(递推)
折线分割平面,要求尽可能分割出最多的平面,原理其实和直线分割平面一样,都是要使最终所有线之间的交点最多。先把递推公式放上,有空自己理解理解。直线:f(n)=f(n-1)+n;折线:f(n)=f(n-1)+4*(n-1)+1;代码如下#include&lt;stdio.h&gt;int main(){ long long array[10001]; int C; int n,k=...原创 2019-03-07 13:12:19 · 550 阅读 · 0 评论 -
杭电ACM——2049(递推)
此题跟2048很相似,都是错排的问题,只不过加入组合数的知识罢了。代码如下:`#include&amp;lt;cstdio&amp;gt;#include&amp;lt;iostream&amp;gt;using namespace std;long long array[25];int main(){ long long n,m; int i,kase; long long a,b; for(i=2原创 2019-03-07 13:12:08 · 453 阅读 · 0 评论 -
HDU2062,Subset sequence(思维+递推)
emmmmm,题解是看下面的大牛的:https://www.cnblogs.com/AOQNRMGYXLMV/p/3832909.html简单的说就是,由n个数字构成的所有排列,以1,2,3,…n,为开头的排列的数量是相同的,设为num[n],因此将m除num[n]就是第一个元素,然后不断地递推下去就行了。#include<cstdio>#include<iostream...原创 2019-09-04 23:35:42 · 233 阅读 · 0 评论