zoukankan      html  css  js  c++  java
  • F

    F - 小晴天老师系列——苹果大丰收

    Time Limit: 2000/1000MS (Java/Others)    Memory Limit: 128000/64000KB (Java/Others)
    Submit Status

    Problem Description

    小晴天的后花园有好多好多的苹果树,某天,苹果大丰收~小晴天总共摘了M个苹果,我们假设苹果之间是不可分辨的。

    为了保存苹果,小晴天买了N个一模一样的箱子,想要把苹果放进去,允许有的箱子是空的,请问小晴天有多少种不同的放法呢?

    例如对于4个苹果,3个箱子,2+1+1和1+2+1和1+1+2 是同一种分法。

    Input

    多组数据,首先是一个正整数t(t<=100)表示数据的组数。

    每组数据均包含二个整数M和N(1<=M,N<=10)。

    Output

    对于每组数据,输出一个整数,表示不同的放法数。

    Sample Input

    1
    7 3

    Sample Output

    8

    Hint

    对于7个苹果,3个箱子

    有7+0+0=6+1+0=5+2+0=4+3+0=5+1+1=4+2+1=3+2+2=3+3+1

    这8种放法。

    思路:这以前做过的一题一样,不过这是暴力专题,就用暴力的方法过了。。。

    按照每次放的方式,从多到少一次放苹果,

    比如7 3,的话就是 :

        7  0  0

        6  1  0

               5  2  0

           5  1  1

        4  3  0

        4  2  1

        3  3  1

        3  2  2

    是不是发现了什么规律哈,从左边到右边依次递减,而且总和会等于M,且数的个数不能够超过N,所暴力解决:

     1 #include <iostream>
     2 #include <stdio.h>
     3 using namespace std;
     4 int M,N;
     5 int SUM;
     6 void BFS(int sum,int j,int Num)/*BFS(i,j,k),i表示当前数的总和,*/
     7 {                               /*j标记第几个数,k表示当前的数*/
     8     int i;
     9     if(j<=N&&sum==M){SUM++;return ;}/*总和等于M且数的个数小于N为一种方法*/
    10     for(i=Num;i>0;i--)/*每一次取的数都要小于或者等于当前的数*/
    11     {
    12         if(sum+i<=M)/*判断是否超出总和*/
    13         {
    14             BFS(sum+i,j+1,i);
    15         }
    16     }
    17 }
    18 int main()
    19 {
    20     int i,T;
    21     scanf("%d",&T);
    22     while(T--)
    23     {
    24         scanf("%d%d",&M,&N);
    25         SUM=0;
    26         for(i=M;i*N>=M;i--)
    27         {
    28             BFS(i,1,i); 
    29         }
    30         printf("%d
    ",SUM);
    31     }
    32     return 0;
    33 }
    View Code

    以前的一题目放苹果:http://www.cnblogs.com/LWF5201314614/p/3750313.html

    转载请备注:
    **************************************
    * 作者: Wurq
    * 博客: https://www.cnblogs.com/Wurq/
    * Gitee: https://gitee.com/wurq
    **************************************
  • 相关阅读:
    215. Kth Largest Element in an Array(partition逆序排序,index+1 == k)
    220. Contains Duplicate III(核心:set数组有序/桶排序)
    leetcode 772 基本计算器III(包含+-*/ 以及括号) 核心在于递归
    MTK8312 android 4.4 显示虚拟按键区源码修改
    高通android9.0 camera API1底层调用为HAL3而非HAL1
    使用yanzhenjie的Zbar Github项目时4.2版本上找不到so库的问题
    android studio CMake NDK:配置笔记
    android设置系统默认开机时间
    android开发里跳过的坑——GridView使用Glide加载图片不显示
    android系统编译打开系统蓝牙
  • 原文地址:https://www.cnblogs.com/Wurq/p/4449026.html
Copyright © 2011-2022 走看看