首页 > 学院 > 开发设计 > 正文

1160_放苹果

2019-11-11 06:49:28
字体:
来源:转载
供稿:网友
// 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);*/
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表