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

北大青鸟大学城校区logo 北大青鸟大学城校区
招生简章校园环境师资力量就业明星招生问答软件工程师北京大学学历学员项目联系我们 报名通道

免费在线咨询通道>>

免费在线报名通道>>

北大青鸟报名电话
当前位置:北大青鸟 > 软件教程 > .net教程 >

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

标签:   分类:.net教程


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

本实例是用回溯法输出n个自然数中以r个数全排列。代码如下:
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
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;
        }
    }


若有疑问请拨打北大青鸟咨询热线:010-80146691或点击免费在线咨询!
  • xml地图 网站地图 招生简章 合作企业 学员项目 联系我们
  • 关闭窗口