Problema de programación en lenguaje C de elegir 6 de 15 combinaciones y cumplir las condiciones
#include?
#include?
usando?namespace?std?;
#define? MAX?10?
int?res[MAX]?;//res almacena los 6 números seleccionados cada vez
int?N,?M?;//N es 15, M es 6
ofstream?fout("c:\\result.txt"?;// Flujo de salida del archivo, envíe el resultado a la unidad c result.txt
void ?print(int?res[],?int?n)//Escribe 6 números en el archivo
{
double?t?=?res[0]+ res[ 1]?;
if(t?=?10)//No imprimir si la suma del primer número y el segundo número no es 10
return ;
p>for(int?i?=?0;?i?
{
fout? res[i]?<"?"?;
}
fout?<
}
void?com(int?last,?int?layer)?//last es el último número almacenado en la resolución actual y la capa es el número de capas recursivas
{
if(layer?==?6)//Al recurrir a la sexta capa, la impresión indica que se han seleccionado 6 números
{
print(res,?M)? ;//Llamar a print para escribir el número en el archivo
return?;
}
for(int?j?=?last+1;? j? <=?N-M+layer+1;?j++)//Si no has seleccionado suficientes 6 números, continúa seleccionando
{
res[layer] ?=?j ?;
com(j,?capa+1)?;
}
}
int?main () p>
{
N?=?15;?
M?=?6?;
com(0,? 0)?; //De hecho, no se seleccionó ningún número para res y el número de niveles de recursividad es 0
return?0?;
}
//El resultado se guarda en la unidad c result.txt