问4😓好无语啊,为什么用递归过不了!?
2024-03-27 20:41:44
发布于:广东
【问题4】此题好奇怪,我用递归试了好久都过不了,真的亚麻呆住了
我的代码有问题吗:
#include<bits/stdc++.h>
using namespace std;
int a[105],b[105],n;
int dg(int x,int y)
{
if(y-x==1)
{
return 1;
}
if(y-x==2)
{
return 2;
}
return dg(x,y-1)+dg(x,y-2);
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i]>>b[i];
dg(a[i],b[i]);
cout<<endl;
}
}
我滴妈呀,谁能来救救我啊,好难啊~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
全部评论 8
写好了,看我提交记录(最近脑抽(忘开long long见祖宗
2024-03-25 来自 浙江
2OK
2024-03-25 来自 广东
0memset(dp, -1, sizeof dp);这是什么意思啊
2024-03-25 来自 广东
0把数组全都变成-1
2024-03-25 来自 浙江
0
用记忆化搜索
2024-03-25 来自 浙江
1也许可以
2024-03-25 来自 广东
0咋搞啊
2024-03-25 来自 广东
0只能用记忆化搜索,不然绝对超时。
2024-03-25 来自 浙江
0
显然不能删除,至少要改成dg(50),不然就wa了
2024-03-25 来自 浙江
0👌
2024-03-25 来自 广东
0
@Macw07 还有,全排列那道题,我之后又写了个解法,你去我更新的动态那看一下吧。 https://www.acgo.cn/discuss/15255
2024-03-25 来自 广东
0?你这个代码连样例都没有过(根本就没有输出结果)
2024-03-25 来自 浙江
0是吗?我直接写就叫了,没运行😆
2024-03-25 来自 广东
0
t;
while(t--)
{
int n,m;
cin>>n>>m;
cout<<dp[m-n]<<endl;
}
return 0;
}2024-03-25 来自 四川
0你试试用这个#include<bits/stdc++.h>
using namespace std;
long long dp[10001];
int main()
{
dp[1]=1;
dp[2]=2;
for(int i=3;i<=50;++i){
dp[i] = dp[i-1] + dp[i-2];
}
int t;
cin>2024-03-25 来自 四川
0ok
2024-03-25 来自 广东
1加油
2024-03-25 来自 四川
0谢谢,我试过这个,可以过
2024-03-25 来自 广东
0
虽然有更简单的过法,但是还是想用递归做!
2024-03-25 来自 广东
0递归太耗时了
2024-03-25 来自 四川
1o?那该咋做啊
2024-03-25 来自 广东
0
有帮助,赞一个