[Ybt] [Ejemplo 3 de lección de recurrencia de cálculo básico] División de números

División de números

Enlace de tema: división de números


Descripción del Título

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Ideas para resolver problemas

fi, j f_ { {i}, {j}}Fi , jDijo que lo haría iiyo se divide enjjNúmero de casos en j copias.
Obviamente, cuandoi = ji = jyo=jf (i) (j) f (i) (j)Solo hay un caso para f ( i ) ( j ) , que es1 11 .
Sij> i j> ij>yo , incluso1 11 no es suficiente, por lo que debe ser ilegal, ya que0 00 .
Considere la situación normal:

  • Si sumamos 1 1 después de la secuencia original1 , entonces el total original esi - 1 i-1yo-1 , el número original de copias esj - 1 j-1j-1
  • Si sumamos 1 1 a cada número sobre la base de la secuencia original1 , entonces el total original esi - j ijyo-j , el número original de copias esjjj

Entonces la fórmula de recurrencia es:
fi, j = fi - 1, j - 1 + fi - j, j f_ { {i}, {j}} = f_ { {i-1}, {j-1}} + f_ { {ij}, {j}}Fi , j=Fi - 1 , j - 1+Fi - j , j

código

#include<iostream>
#include<cstdio>
using namespace std;

int n,m;
int f[210][10];

int main()
{
    
    
	cin>>n>>m;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
		{
    
    
			if(i==j)
				f[i][j]=1;
			else if(j>i)
				f[i][j]=0;
			else
				f[i][j]=f[i-1][j-1]+f[i-j][j];
		}
	cout<<f[n][m];
}

Supongo que te gusta

Origin blog.csdn.net/SSL_guyixin/article/details/111641743
Recomendado
Clasificación