#include?<fstream>
using?namespace?std?;
#define?MAX?10?
int?res[MAX]?;//res存儲每次選擇的6個數
int?N,?M?;//N是15,M是6
ofstream?fout("c:\\result.txt")?;//文件輸出流,將結果輸出到c盤result.txt中
void?print(int?res[],?int?n)//將6個數字寫入文件
{
double?t?=?res[0]+res[1]?;
if(t?!=?10)//如果第壹個數字和第二個數字之和不是10就不打印
return?;
for(int?i?=?0;?i?<?n;?i++)//n是6
{
fout?<<?res[i]?<<?"?"?;
}
fout?<<?endl?;
}
void?com(int?last,?int?layer)?//last是當前res中存儲的最後壹個數,layer是遞歸的層數
{
if(layer?==?6)//遞歸到6層的時候打印說明已經選出6個數
{
print(res,?M)?;//調用print將數寫入文件
return?;
}
for(int?j?=?last+1;?j?<=?N-M+layer+1;?j++)//如果還沒選夠6個數,繼續選擇
{
res[layer]?=?j?;
com(j,?layer+1)?;
}
}
int?main()
{
N?=?15;?
M?=?6?;
com(0,?0)?;//其實res壹個數都沒選,遞歸層數為0
return?0?;
}
//結果保存到c盤下的result.txt