Poner manzanas (programación dinámica)

Para encontrar una fruta Crocker, Link necesita colocar manzanas en un plato, de las cuales solo hay una situación en la que puede aparecer una fruta Crocker. Por lo tanto, Link necesita probar todas las formas de jugar.

Hay M manzanas idénticas colocadas en N platos idénticos, y se permite que algunos platos permanezcan vacíos ¿Cuántas maneras diferentes hay en total?

Nota: 5, 1, 1 y 1, 5, 1 son iguales.

Entrada
La primera línea es el número t de datos de prueba (0 <= t <= 20). Cada una de las siguientes líneas contiene dos números enteros M y N, separados por espacios. 1<=M, N<=10.

Salida
La salida corresponde al número de métodos

Ejemplo de entrada 1
1
7 3

Muestra de salida 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;
	}


}

Supongo que te gusta

Origin blog.csdn.net/qq_65120254/article/details/123867330
Recomendado
Clasificación