zoukankan      html  css  js  c++  java
  • POJ1664 放苹果 (DFS)

    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
     
    其实这道题如果你有这个耐心的话,自己在纸上列举出所有状态结果也是可行的,但这样做就不符合我们ACM的风格了
    这道题可以采取递归的思想,分为两种状况,n为苹果数,m为盘子数
    第一:当n<m时,那么就是将n个苹果分到n个盘的方法
    第二:n>=m时,那么1.将至少其中一个盘不放,那么就是n个苹果放到m-1个盘的方法
                    2.每个盘放一个,然后就是n-m个放在m个盘的放法

     1 #include <stdio.h>  
     2 #include <string.h>  
     3 #include <algorithm>  
     4 using namespace std;  
     5   
     6 int solve(int n,int m)  
     7 {  
     8     if(n == 1 || m == 1 || n == 0)  
     9     return 1;  
    10     if(n<m)  
    11     return solve(n,n);  
    12     else  
    13     return solve(n,m-1)+solve(n-m,m);  
    14 }  
    15   
    16 int main()  
    17 {  
    18     int t,n,m;  
    19     scanf("%d",&t);  
    20     while(t--)  
    21     {  
    22         scanf("%d%d",&n,&m);  
    23         printf("%d
    ",solve(n,m));  
    24     }  
    25   
    26     return 0;  
    27 }  
    View Code
  • 相关阅读:
    dirname basename 截取路径中的目录以及文件名
    Singleton 单例模板
    人生最后一个10年-白银时代
    自动填充英文字母序列
    关于最近使用文档的几个技巧
    关于最近使用文档的几个技巧
    The King of Excel Geek 0.1版本
    Tkinter 学习
    test
    检测电话号码的python程序(一)
  • 原文地址:https://www.cnblogs.com/fjl-vxee/p/6544103.html
Copyright © 2011-2022 走看看