回溯法也称为试探法,该方法首先暂时放弃关于问题规模大小的限制,并将问题的候选解按某种顺序逐一枚举和检验。在回溯法中,放弃当前候选解,寻找下一个候选解的过程称为回溯。
本实例是用回溯法输出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;
}
}
本文来源:https://www.wddqw.com/doc/f2ea30d276a20029bd642d6e.html
正在阅读:
武汉市各区各小学对口初中一览表01-01
作文:山荷叶,我的老师01-01
天然水晶的八大消磁方法01-01
妇女工作如何围绕“家”字做文章01-01
杭州西湖美食之东坡肉01-01
谜语蜜饯黄连打一成语的答案01-01
班主任诚信教育随笔01-01