其他分享
首页 > 其他分享> > SDUT递推题目

SDUT递推题目

作者:互联网

养兔子

#include <iostream>

using namespace std;
int M=1e3+10;

int main()
{
	int n;
	long long int f[M];
	cin>>n;
	f[1]=1;
	f[2]=2;
	for(int i=3;i<=n;i++)
	{
		f[i]=f[i-1]+f[i-2];
	}
	cout<<f[n];
	return 0;
 } 

母牛的故事

#include <stdio.h>

int main()
{
	int n;
	long long int a[60];
	scanf("%d",&n);
	a[1]=1;
	a[2]=2;
	a[3]=3;
	a[4]=4;
	a[5]=6;
	for(int i=6;i<=n;i++)
	{
		a[i]=a[i-1]+a[i-3];
	}
	printf("%lld",a[n]);
	return 0;
}

黄金时代

#include <stdio.h>

double N=0.6180339887;

int main()
{
	int n;
	long long int a[23];
	scanf("%d",&n);
	a[1]=5;
	a[2]=8;
	for(int i=3;i<=n;i++)
	{
		a[i]=a[i-1]+a[i-2];
	}
	printf("%lld",a[n]);
	return 0;
 } 

骨牌铺方格

#include <iostream>

using namespace std;
int M=1e3+10;

int main()
{
	int n;
	long long int f[M];
	cin>>n;
	f[1]=1;
	f[2]=2;
	for(int i=3;i<=n;i++)
	{
		f[i]=f[i-1]+f[i-2];
	}
	cout<<f[n];
	return 0;
 } 

爬楼梯

#include <stdio.h>

int main()
{
	int n;
	long long int a[55];
	scanf("%d",&n);
	a[1]=1;
	a[2]=2;
	for(int i=3;i<=n;i++)
	{
		a[i]=a[i-1]+a[i-2];
	}
	printf("%lld",a[n]);
	return 0;
}

三国佚事——巴蜀之危

#include <stdio.h>

int main()
{
	int n;
	long long int a[22];
	scanf("%d",&n);
	a[1]=0;
	a[2]=1;
	for(int i=3;i<=n;i++)
	{
		a[i]=(i-1)*a[i-1]+(i-1)*a[i-2];
	}
	printf("%lld",a[n]);
	return 0;
 } 

王小二切饼

#include <stdio.h>

int main()
{
	int n;
	long long int a[101];
	scanf("%d",&n);
	a[1]=2;
	a[2]=4;
	for(int i=3;i<=n;i++)
	{
		a[i]=a[i-1]+i;
	}
	printf("%lld",a[n]);
	return 0;
}

拍皮球

 #include <stdio.h>
 #include <stdlib.h>
 int main()
 {
    int T,b,i;
   double a,sum;
       scanf("%lf %d",&a,&b);
       sum=a;
       a=a/2;
       for(i=2; i<=b; i++)
       {
           sum+=a*2;
           a=a/2;
        }
        printf("%.2lf %.2lf\n",sum,a);
        return 0;
}

蟠桃记

#include <stdio.h>


int main()
{ 
    int n;
    long long int a[31];
    scanf("%d",&n);
    a[n]=1;
    a[n-1]=4;
    for(int i=n-1;i>=2;i--)
    {
    	a[i-1]=2*(a[i]+1);
	}
	printf("%lld",a[1]);
	return 0;
 } 

马拦过河卒

#include <iostream>
#include <stdio.h>
#include <math.h>
#include <string.h>
#define ll long long
using namespace std;
const int N = 1e2+10;
int n,m,a,b;
long long int f[N][N];
int l[] = {-2,-1,1,2,2,1,-1,-2,0};
int r[] = {-1,-2,-2,-1,1,2,2,1,0};
bool judge(int idx,int idy)
{

	for(int i=0;i<=8;i++)
	{	int x=l[i]+a,y=r[i]+b;
		if(x==idx&&y==idy) return true;
	}
	return false;
}
int main()
{
	scanf("%d %d %d %d",&n,&m,&a,&b);
	f[0][0]=1;
	for(int i=0;i<=n;i++){
		for(int j=0;j<=m;j++){
			if(j==0&&i==0) continue;
			if(judge(i,j)) f[i][j]=0;
			else if(j==0) f[i][j]=f[i-1][j];
			else if(i==0) f[i][j]=f[i][j-1];
			else f[i][j]=f[i-1][j]+f[i][j-1];
		}
	}
	printf("%lld\n",f[n][m]);
	return 0;
}

标签:main,题目,int,long,SDUT,printf,return,include,递推
来源: https://blog.csdn.net/weixin_51335453/article/details/113808797