private
string
combine(
int
[] a,
int
n,
int
m,
int
[] b,
int
M)
... {
string all = "";
for (int i = n; i >= m; i--) // 注意这里的循环范围
...{
b[m - 1] = i - 1;
if (m > 1)
all+=combine(a, i - 1, m - 1, b, M);
else // m == 1, 输出一个组合
...{
for (int j = M - 1; j >= 0; j--)
all += a[b[j]].ToString() + " ";
all += " ";
}
}
return all;
}
private void show( int n)
... {
int[] a = new int[n];
string showall = "";
for (int i = 0; i < n; i++)
...{
a[i]=i;
}
for (int i = 0; i < n; i++)
...{
int[] b=new int[i+1];
showall += combine(a, n, i+1, b, i+1);
}
this.TextBox1.Text = showall;
}
... {
string all = "";
for (int i = n; i >= m; i--) // 注意这里的循环范围
...{
b[m - 1] = i - 1;
if (m > 1)
all+=combine(a, i - 1, m - 1, b, M);
else // m == 1, 输出一个组合
...{
for (int j = M - 1; j >= 0; j--)
all += a[b[j]].ToString() + " ";
all += " ";
}
}
return all;
}
private void show( int n)
... {
int[] a = new int[n];
string showall = "";
for (int i = 0; i < n; i++)
...{
a[i]=i;
}
for (int i = 0; i < n; i++)
...{
int[] b=new int[i+1];
showall += combine(a, n, i+1, b, i+1);
}
this.TextBox1.Text = showall;
}