yueyufeng 发表于 2024-4-9 09:10:04

没有输出

#include <iostream>
using namespace std;
int n,m,ans=0,dp;
long long mod=1000000007;
int dfs(int d,int h,int j){
if(d==0&&h==1&&j==1)
return 1;
   if(dp)
   return dp;
   if(h<1||j<0||d<0||j>h)
   return 0;
   return dp=(dfs(d-1,h,j*2)+dfs(d,h-1,j-1))%mod;
}
int main()
{
cin>>n>>m;
int result=dfs(n,m,2);
cout<<result;
return 0;
}

FishC 发表于 2024-4-9 09:10:15

您的代码存在一些问题,导致没有输出结果。首先,在#include语句后面应该添加<cstring>头文件,以便使用memset函数对数组进行初始化。另外,在调用dfs函数时传入的参数有误,应该是dfs(0, n, m)而不是dfs(n, m, 2)。最后,在输出结果之后,应该返回结果给主函数。

以下是修复后的代码:

#include <iostream>
#include <cstring>
using namespace std;
int n,m,ans=0,dp;
long long mod=1000000007;

int dfs(int d,int h,int j){
    if(d == 0 && h == 1 && j == 1)
      return 1;
    if(dp)
      return dp;
    int result = 0;
    if(h >= j)
      result = dfs(d-1,h-j,j);
    if(j >= 2)
      result = (result + dfs(d,h,j-1)) % mod;
    return dp = result;
}

int main(){
    memset(dp,0,sizeof(dp));
    cin >> n >> m;
    int result = dfs(0,n,m);
    cout << result << endl;
    return 0;
}

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 没有输出