• 放苹果


    放苹果(基本递归)

    题目链接:POJ 1663

    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

    题解:

    基本的递归的题,递归的关键:第一要找到递归的状态,这个题的状态就是苹果和盘子在改变。如果剩下的没有空盘子,则可以把每一个盘子放下一个苹果;如果剩下有空盘子,状态变为苹果数目不变,而盘子数目减一。第二就是找到递归的终止条件,本题一种设计就是苹果数目为0时,return 1;盘子为0时,return 0。

    代码:

    #include<iostream>
    using namespace std;
    int fun(int m, int n)
    {
    	if (m < n)return fun(m, m);
    	 if (m == 0)return 1;
    	 if (n == 0)return 0;
    	  return fun(m, n - 1) + fun(m - n, n);
    }
    int main()
    {
    	int m, n;//m个苹果,n个盘子
    	int t;
    	cin >> t;
    	while (t--)
    	{
    		cin >> m >> n;
    		cout << fun(m, n) << endl;
    	}
    	return 0;
    }
    

    这个周没怎么写题,写了两个递归的水题。今天还打了半天的农药,嘤嘤嘤.........

    不疯魔不成活
  • 相关阅读:
    QTP 参数化
    功能自动化测试流程
    Oracle客户端安装及配置
    描述性编程与对象库编程的对比
    Java用Scanner类获取用户输入
    Java入门的程序汇总
    Java入门学习知识点汇总
    Java最常用的变量定义汇总
    eclipse对Java程序的移植
    JavaScript关闭窗口的同时打开新页面的方法
  • 原文地址:https://www.cnblogs.com/gzr2018/p/9691067.html
Copyright © 2020-2023  润新知