鱼C论坛

 找回密码
 立即注册
查看: 128|回复: 1

没有输出

[复制链接]
发表于 2024-4-9 09:10:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <iostream>
using namespace std;
int n,m,ans=0,dp[105][105][105];
long long mod=1000000007;
int dfs(int d,int h,int j){
  if(d==0&&h==1&&j==1)
  return 1;
   if(dp[d][h][j])
   return dp[d][h][j];
   if(h<1||j<0||d<0||j>h)
   return 0;
   return dp[d][h][j]=(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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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[1005][105][105];
long long mod=1000000007;

int dfs(int d,int h,int j){
    if(d == 0 && h == 1 && j == 1)
        return 1;
    if(dp[d][h][j])
        return dp[d][h][j];
    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[d][h][j] = result;
}

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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-1 04:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表