zoukankan      html  css  js  c++  java
  • poj1664解题报告

    放苹果

    Time Limit: 1000MS
    Memory Limit: 10000K

    Total Submissions: 17562
    Accepted: 11076

    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

    此题既可用求排列数的种类数的方法类似的按照非递减的顺序回溯得到个数也可按照整划分的思想递归求解,以下为递归求解:
    count(x,y)函数返回在整数x,划分的一系列单个整数不超过y的情况下的划分总数,它可由两种情况构成:
    一种是不会有y的出现;另一种是有一个y的出现(注意,此时,此后的递归同样允许y出现,故可有多个y的情况)

    #include<iostream>
    using namespace std;
    int count(int x,int y)
    {
    if(y==1||x==0) return 1;
    if(x<y) return count(x,x);
    return count(x,y-1)+count(x-y,y);
    }
    int main()
    {
    int t,m,n;
    cin
    >>t;
    for(int i=0;i<t;i++)
    {
    cin
    >>m>>n;
    cout
    <<count(m,n)<<endl;
    }
    return 0;
    }

  • 相关阅读:
    linux 文件权限(s、t、i、a)解析
    vim Vundle
    数据结构学习(1)
    Android ImageView设置图片原理(上)
    C++11 之auto
    Android屏幕分辨率获取方法--源码剖析
    C++的发展方向是对的嘛?
    c++ 的前世今生
    学习知识的一种思路
    遗失的访谈小评
  • 原文地址:https://www.cnblogs.com/easyFancy/p/2082759.html
Copyright © 2011-2022 走看看