• 动态规划——放苹果


    问题:

    把M 个同样的苹果放在N 个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K 表示)5,1,1 和1,5,1 是同一种分法。

    两种解法:

    #define _CRT_SECURE_NO_WARNINGS
    #include<stdio.h>
    #include<stdlib.h>
    int fun(int n, int m)  // 苹果数  盘子数
    {
    	if (n == 0)   // 没有苹果
    		return 1;
    	if (m == 0)   // 没有盘子
    		return  0;
    	if (m > n)    //  盘子比苹果多 (一定有篮子为空)
    		return fun19(n, n);
    	else          //  分两种,有无篮子为空  
    		return fun19(n, m - 1) + fun19(n - m, m);
    }
    int main(void)
    {
    	int a[15][15] = { 0 };
    	for (int i = 1; i < 15; i++)
    	{
    		a[0][i] = 1;   // 0个苹果
    		a[i][0] = 0;   // 0个篮子
    	}
    	for (int n = 1; n < 15; n++)
    	{
    		for (int m = 1; m < 15; m++)
    		{
    			if (m > n)
    				a[n][m] = a[n][n];
    			else
    				a[n][m] = a[n][m - 1] + a[n - m][m];
    		}
    	}
    
    	int M, N, k;
    	printf("请输入有几个苹果并回车:");
    	scanf("%d", &M);
    	printf("请输入有几个篮子并回车:");
    	scanf("%d", &N);
    
    	//k = a[M][N];           //动态规划
    	k = fun(M, N);       // 递归
    	printf("%d
    ", k);
    
    	system("pause");
    	return 0;
    }
    

    =========== ========= ======== ======= ====== ===== ==== === == =

         颂     无门和尚(宋)

    春有百花秋有月,夏有凉风东有雪。

    若无闲事挂心头,便是人间好时节。

  • 相关阅读:
    string基本字符系列容器(一)
    HDU 1541 star (树状数组)
    NKOI 1321--数列操作问题(裸BIT)
    树状数组(BIT)初学
    vector向量容器
    C++ STL概述
    2015年,为ACM奋斗的一年
    kuangbin带你飞,矩阵(简单数学推导题)
    hust 1009 Sum the K-th
    hust 1223 Friends
  • 原文地址:https://www.cnblogs.com/asdfknjhu/p/12344842.html
Copyright © 2020-2023  润新知