リンゴを置く (動的計画法)

クロッカー フルーツを見つけるには、リンクはリンゴを皿に置く必要があります。したがって、リンクはすべての遊び方を試す必要があります。

N 個の同じ皿に M 個の同じリンゴが置かれ、いくつかの皿は空のままにしておくことができます. 全部でいくつの異なる方法がありますか?

注: 5、1、1 と 1、5、1 は同じ方法です。

入力
最初の行は、テスト データの数 t です (0 <= t <= 20)。次の各行には、スペースで区切られた 2 つの整数 M と N が含まれています。1<=M、N<=10。

出力
出力はメソッドの数に対応します

入力例 1
1
7 3

出力サンプル 1
8

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

int main() 
{
    
    
	int k, n, m;
	cin >> k;
	while (k--)
	{
    
    
		int dp[13][13] = {
    
     0 };  //:指将i个苹果放到j 个框的总方法数
		cin >> m >> n;
		if (n > m) n = m;
		int i, j;
		for (i = 0; i<= m; i++)  dp[i][1] = 1; 
		for (i = 0; i <= n; i++) dp[0][i] = 1;

		for(i=1;i<=m;i++)
			for (j = 2; j <= n; j++)
			{
    
    
				dp[i][j] = dp[i][j - 1];
				if (i >= j) dp[i][j] += dp[i - j][j];
		}
		
		cout << dp[m][n] << endl;
	}


}

おすすめ

転載: blog.csdn.net/qq_65120254/article/details/123867330