1 solutions

  • 0
    @ 2023-7-13 19:45:23

    算法标签:dfs ,剪枝

    难度:橙

    一道 dfs 。在 dfs 函数中定义三个参数:剩余总和,剩余数量,剩余数最小值 。直接 dfs 即可。

    dfs 部分代码如下:

    int dfs(int a/*剩余总和*/,int b/*剩余数量*/,int c/*最小值*/){
    	int ans=0;//答案 
    	if(!a||!b) return !a&&!b;//结束条件 
    	if(x[a][b][c]!=0) return x[a][b][c];//如果已经存过,则直接调用 
    	for(int i=c;i<=a/b;i++) ans+=dfs(a-i,b-1,i);//取数过程 
    	x[a][b][c]=ans;//放入记忆数组 
    	return ans;
    }
    
    • 1

    Information

    ID
    19
    Time
    1000ms
    Memory
    512MiB
    Difficulty
    5
    Tags
    # Submissions
    61
    Accepted
    22
    Uploaded By