首页 > 试题广场 >

放苹果

[编程题]放苹果
  • 热度指数:11300 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
把 M 个同样的苹果放在 N 个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?
注意:5、1、1 和 1、5、1 是同一种分法,即顺序无关。

输入描述:
输入包含多组数据。

每组数据包含两个正整数 m和n(1≤m, n≤20)。


输出描述:
对应每组数据,输出一个整数k,表示有k种不同的分法。
示例1

输入

7 3

输出

8
头像 flyflyfly00
发表于 2021-04-25 22:16:59
首先用递归的思想来思考这道题:1,递归出口:当只有一个盘子或者 含有 0 个 或 1 个苹果的时候只有一种方法2,当盘子数 n 大于苹果数 m 时,则必有 n - m 个空盘子,所以只需求 m 个盘子 放 m 个苹果时的方法数即可,3,当盘子数 n 小于等于 苹果数 m 时,总方法数 = 当含有 展开全文
头像 ⭐⭐⭐⭐⭐⭐
发表于 2023-03-14 17:41:21
#include <iostream> #include<vector> using namespace std; int main() { int m,n; while(cin>>m>>n){ vector<vector 展开全文
头像 牛客596495425号
发表于 2025-03-16 14:02:29
#include <iostream> #include<cstring> using namespace std; const int N = 30; int f[N][N];//f[i][j]i个苹果放入j个盘子 //分成没有空盘子和有空盘子 //有空盘子f[i][j]= 展开全文
头像 粉詹眉
发表于 2024-02-09 00:18:31
#include <iostream> using namespace std; int dfs(int u,int m,int n,int last){ if(u==n){ if(m==0) return 1; else return 0; 展开全文
头像 rainman_
发表于 2023-03-21 09:34:52
#include <iostream> using namespace std; /* m 个苹果 n 个盘子 */ int ways(int m, int n) { if (m == 0) { //苹果没了,这是一种方法 return 1; 展开全文
头像 宁静的冬日
发表于 2022-03-08 13:02:17
先写递归,然后再用dp简化复杂度,这样思路更清晰 #include<iostream> #include<algorithm> #include<cstring> using namespace std; #define MAX 1024; int dp[32][ 展开全文
头像 牛客735906266号
发表于 2025-03-20 11:47:27
#include <iostream> using namespace std; int main() { int n, m; while (cin >> n >> m) { // 注意 while 处理多个 case int d 展开全文
头像 lyw菌
发表于 2023-03-09 16:40:33
//动态规划 #include "stdio.h" int dp(int m,int n){ if(n == 1) return 1; if(m == 0) return 1; if(m < n) return dp(m, 展开全文
头像 lll00077
发表于 2025-03-11 20:47:17
思路思路参考:https://blog.nowcoder.net/n/58251c30a862488a98c511f048ae5eac?f=commentdp[i][j]:i个盘子放j个苹果。当(苹果 j >盘子 i)时,可分为有空盘子和没空盘子的情况。有空盘子:第 i 个盘子为空,不放苹果 展开全文
头像 chong_0428
发表于 2024-03-09 18:07:57
def apple(m, n): dp = [[0 for i in range(n+1)] for j in range(m+1)] for i in range(1, m+1): dp[i][1] = 1 for j in range(1, n+1 展开全文