回溯法也称为试探法,该方法首先暂时放弃关于问题规模大小的限制,并将问题的候选解按某种顺序逐一枚举和检验。在回溯法中,放弃当前候选解,寻找下一个候选解的过程称为回溯。
本实例是用回溯法输出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
西游记梗概200字01-01
殊邈于世的印人——记书法家、篆刻家孙熙春01-01
第三节 独特的民族风--辽阔的草原01-01
《我长大了》阅读理解答案01-01
中山桥01-01
除法应用题30道01-01
斧王各方面全攻略01-01