在算法中找到M个元素组合后,可以再进行补充判断条件等,目前只进行输出。
public void DoSomethingFromArray(object[] input, int m)
{
int n = input.Length;
var order = new int[m + 1];
//注意这里order[0]=-1用来作为循环判断标识,另外从order[1]到order[m]按从小到大的顺序存储input的下标值
//算法按层循环,第一步:order[m]: 当前指-> input.Length;第二步:order[m-1]:当前指-> input.Length-1...
//循环从 [0][1]...[m-1] 递增到 [n-m+1]...[n-1][n]
for (var i = 0; i <= m; i++)
{
order[i] = i - 1;
}
var k = m;
var flag = true; // 标志找到一个有效组合
while (order[0] == -1)
{
if (flag) // 输出符合要求的组合
{
for (var j = 1; j <= m; j++)
{