使用回溯法找出n个自然数中取r个数的全排列

时间:2021-05-02

本文介绍了使用回溯法找出n个自然数中取r个数的全排列的方法,有兴趣的可参考一下。

回溯法也称为试探法,该方法首先暂时放弃关于问题规模大小的限制,并将问题的候选解按某种顺序逐一枚举和检验。在回溯法中,放弃当前候选解,寻找下一个候选解的过程称为回溯。

本实例是用回溯法输出n个自然数中以r个数全排列。代码如下:

public void Arrange(int n, int r) int i = 0, j; string s; int[] a = new int[n]; a[i] = 1; while (true) { if ((a[i] - i) <= (n - r + 1)) { if (i == (r - 1)) { s = ""; for (j = 0; j < r; j++) { s = s + Convert.ToString(a[j]) + ","; } // Memo1.Lines.Append(Trim(s)); Console.WriteLine(s); a[i] = a[i] + 1; continue; } i = i + 1; a[i] = a[i - 1] + 1; } else { if (i == 0) { break; } i = i - 1; a[i] = a[i] + 1; } }

本文源自:翔宇亭——IT乐园(http://),转载请保留此信息!

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章