1160_放苹果

来源:互联网 发布:js动态设置div高度 编辑:程序博客网 时间:2024/05/20 10:24
// 1160_放苹果.cpp : 定义控制台应用程序的入口点。//题目1160:放苹果//时间限制:1 秒内存限制:32 兆特殊判题:否提交:1163解决:788//题目描述://把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。//输入://第一行是测试数据的数目t(0 <= t <= 20)。以下每行均包含二个整数M和N,以空格分开。1<=M,N<=10。//输出://对输入的每组数据M和N,用一行输出相应的K。//样例输入://1//7 3//样例输出://8//来源://2011年北京大学计算机研究生机试真题#include "stdafx.h"#include "stdio.h"#include "algorithm"#include "iostream"#include "string.h"using namespace std;int func(int m,int n){    if(m<0)        return 0;    if(!m || n==1)        return 1;    else        return func(m,n-1) + func(m-n,n);   }int main(){    int t,m,n;    cin>>t;    while(t--){        cin>>m>>n;        cout<<func(m,n)<<endl;    }    return 0;}/*基本思路(转):令(m,n)表示m个苹果放到n个篮子里的种数,那么势必会有篮子空余、篮子都放两种情况。1、假如有一个篮子空余,那么空余篮子相当于没用,那么(m,n)的问题就是把m个苹果放到n-1个篮子里的种数(m,n-1)2、假如没有篮子空余,那么每个篮子至少应该有一个苹果,即剩下了m-n个苹果了,问题就变成了,把m-n个苹果放到n个篮子里的问题了(m-n,n)。所以:(m,n)=(m,n-1)+ (m-n,n);*/
0 0
原创粉丝点击