C Problema de subir escaleras n escaleras, puedes subir 1, 2, 3 niveles cada vez, el número de escalones en un escalón es m
#include?lt;iostreamgt;
#include?lt;stringgt;
usando?namespace?std;
int? n, m; // De la pregunta, n es la serie, m es el número de pasos
long?long?cnt=0 //El número total de situaciones estadísticas
void?dfs(int ?step_climb, string?ans, int?left)//step_climb es el número de pasos que se han dado
{//ans es la última respuesta de la cadena de salida, la izquierda es la número de pasos restantes
if(step_climbgt; m||leftlt; 0)//Si das más de m pasos o vas demasiado lejos (los pasos restantes son negativos)
{
return?;
}
if(step_climb==mamp;amp;left==0)//Si das exactamente m pasos y hay no quedan pasos
{
ans.erase(ans.begin()); //Eliminar el número de conexión adicional
coutlt;lt;anslt;lt ;endl;//Emitir la respuesta
cnt; //Contador 1
return;
}
dfs(step_climb 1, ans "-1", left-1); // Busca recursivamente las tres situaciones, ans agrega la serie del paso actual
dfs(step_climb 1, ans "-2", left-2)
dfs(step_climb 1, ans "-3",left-3);
}
int?main()
{
cingt;gt; ngt; gt; m;
dfs(0, "", n);
coutlt; ** tiene"lt;lt;cntlt;lt;" ¿Qué tipo de situación"lt;lt;endl;?
}
Si tiene alguna pregunta, responda p>