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