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)
n个里面选m个元素的所有排列+组合dfs
最新推荐文章于 2022-11-04 11:16:41 发布