char result[20];//用于存放结果
char raw[n];//用于存放原始数据
bool mark[20];//是否选定标记
void dfs(int k)//k为当前选定标记
{
if (k == m)
{
if (测试满足条件)
//todo;
}
else
{
for (int i = 0; i < n; i++)
{
if (mark[i] == 0)
{
mark[i] = true;
b[k] = s[i];//从s选出一个元素
dfs(k + 1);
mark[i] = false;
}
}
}
}
经测试满足排列组合数C(m,n)*A(m,m)
版权声明:本文为xujixuji123原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。