利用搜索方法解决acm1664

Posted on 2008-05-21 16:27  少林  阅读(440)  评论(1编辑  收藏  举报

放苹果
Description

把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。

Input

第一行是测试数据的数目t(0 <= t <= 20)。以下每行均包含二个整数M和N,以空格分开。1<=M,N<=10。

Output

对输入的每组数据M和N,用一行输出相应的K。

Sample Input

1
7 3

Sample Output

8

Source

对给出的苹果依次搜索,对于满足条件的状态进行统计。即可
代码如下:

#include<stdio.h>
int total=0;
int m,n,h;
void solve(int x,int k)
{
    
int i,j;
    
if(h==0&&k<=n)
    
{
        total
++;
        
return ;
    }

        
if(k == n)return;
    
else
    
{
        
for(i=x;i>=1;i--)
        
{

            
if(i<=h)
            
{
                h
=h-i;
                solve(i,k
+1);
                h
=h+i;
            }

        }

    }

}

main()
{
    
int count;
    scanf(
"%d",&count);
    
while(count--)
    
{
        scanf(
"%d%d",&m,&n);
        h
=m;
        total
=0;
        solve(m,
0);
        printf(
"%d\n",total);
    }

}


Copyright © 2024 少林
Powered by .NET 9.0 on Kubernetes