wa了一次,到达50的时候用数据量超了int的范围,改成longlong就行了
#include<iostream>
#include
#include
#include
#define MAX 200
using namespace std;
long long dp[MAX];
int main()
{
int n=0,v=0,m=0;scanf("%d",&n);
for(int ii=0;ii<n;++ii)
{
scanf("%d%d",&m,&v);
memset(dp,0,sizeof(dp));
dp[m]=1,dp[m+1]=1;
for(int i=m+2;i<=v;++i)
{
dp[i]=dp[i-1]+dp[i-2];
}
cout<<dp[v]<<endl;
}
return 0;
}

#include<iostream>
#include<cstring>
#include<stdio.h>
#define MAX 200
using namespace std;
int dp[MAX];
int main()
{
int n,m;scanf("%d",&n);
for(int ii=0;ii<n;++ii)
{
scanf("%d",&m);
memset(dp,0,sizeof(dp));
dp[1]=1,dp[2]=1;
for(int i=3;i<=m;++i)
{
dp[i]=dp[i-1]+dp[i-2];
}
cout<<dp[m]<<endl;
}
return 0;
}

#include<iostream>
#include<cstring>
#include<stdio.h>
#define MAX 200
using namespace std;
int dp[MAX];
int main()
{
int n;
while(~scanf("%d",&n)&&(n!=0))
{
memset(dp,0,sizeof(dp));
dp[1]=1,dp[2]=2,dp[3]=3;
for(int i=4;i<=n;++i)
{
dp[i]=dp[i-1]+dp[i-3];
}
cout<<dp[n]<<endl;
}
return 0;
}
原文:https://www.cnblogs.com/chrysanthemum/p/12405033.html