问题标题: 1240 放梨子

0
0

1
已采纳
陆麟瑞
陆麟瑞
资深天翼
资深天翼

搜索与回溯搜索函数主要代码如下:

发的是Pascal的。

begin
 if t>n then//边界
 begin
     if s=m then inc(k);
     exit;
 end;
 for i:=0 to m do
 if(s+i<=m)and(i>=a[t-1]) then//搜索,并且要回溯
 begin
      s:=s+i;
      a[t]:=i;
      search(t+1);
      s:=s-i;
 end;
end;
0
陈泉宏
陈泉宏
高级守护
高级守护
void dfs(int p,int q)
{
    int i;
    for(i=a[q-1];i<=p;i++)
    {
        if(i<n)
        {
            a[q]=i;
            p-=i;
            if(p==0&&q<=m)s++;
            else dfs(p,q+1);
            p+=i;
        }
    }
}

 

0
0
0
0
黄俊博
黄俊博
资深光能
资深光能

对了!!!

谢谢

祝你早日上缔造者之神

0
0
我要回答