程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> m個相同蘋果放的n個相同盤子中的算法

m個相同蘋果放的n個相同盤子中的算法

編輯:C++入門知識

m個相同的蘋果,放在n個相同的盤子中,由於相同,使用排列組合的方法不好處理。這個問題困擾了我很久   最後由大神“或缺”給出了答案:       以8個蘋果放在3個盤子中為例       思路:   8蘋果3盤子   =8蘋果2盤子+5蘋果2盤子(每盤已經放入1個)+2蘋果2盤子(每盤已經放入3個)   =(8蘋果1盤子+6蘋果1盤子(每盤已經放入1個))+ (3蘋果1盤子(每盤已經放入1個)+1蘋果1盤子)(每盤已經放入1個)+(1蘋果1盤子(每盤已經放入1個)+1蘋果1盤子)(每盤已經放入3個)   ...   =5+3+2   =10   編程實現:    

#include <iostream>  
#include <string>  
  
using namespace std;  
  
int func(int m, int n)  
{  
    cout << "m=" << m << ", n=" << n << endl;  
    if (n <= 1)  
        return 1;  
    int t=0;  
    for (int i=m; i>=0; i-=n)  
    {  
        t += func(i, n-1);  
    }  
    return t;  
}  
  
int main()  
{  
    int m=0, n=0;  
    while (1)  
    {  
        cout << "請輸入蘋果數 盤子數:" ;  
        cin >> m >> n;  
        cout << "您輸入的是: m=" << m << n << endl;  
        if (m==-1)  
        {  
            break;  
        }  
        cout << "共" << func(m, n, "--") << "種放法" << endl;  
        cout << "------------" << endl;  
    }  
    return 0;  
}  

 

計算結果:   在此,深深的表示對大神“或缺”的謝意!    

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved