top1编程
← 返回题目
题解

放苹果

1 条题解

  • 0
    @ 2026-7-28 22:45:19
    #include <stdio.h>
    int m,n;
    int cnt=0;
    
    void dfs(int plate,int apple,int last)  //当前盘子编号,当前已放的苹果总数,当前需最少放置的苹果数
    {
    	int i;
    	if(plate==n && apple==m)  //盘子数=n,苹果数=m,找到一组解 
    	{
    		cnt++;
    		return;
    	}
    	if(plate==n || apple>m)   //盘子数=n,苹果数>m,无解 
    		return;
    	for(i=last;i<=m;i++)
    		dfs(plate+1,apple+i,i);
    } 
    int main()
    {
    	int t;
    	scanf("%d",&t);
    	while(t--)
    	{
    		cnt=0;
    		scanf("%d%d",&m,&n);
    		
    		dfs(0,0,0);
    		printf("%d&#92;n",cnt);
    	}	
    	return 0;
    }
    
    • 1