División de números
Enlace de tema: división de números
Descripción del Título
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=j时f (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];
}