首 页IT知识库收藏内容
当前位置:翔宇亭IT乐园IT知识库C#算法设计

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

减小字体 增大字体 作者:不详  来源:转载  发布时间:2010-08-14 15:53:00

本文介绍了使用回溯法找出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://www.biye5u.com),转载请保留此信息!

微信搜索“优雅的代码”关注本站的公众号,或直接使用微信扫描下面二维码关注本站公众号,以获取最新内容。

个人成长离不开各位的关注,你的关注就是我继续前行的动力。

知识评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
愿您的精彩评论引起共鸣,带来思考和价值。
用户名: 查看更多评论
分 值:100分 90分 80分 70分 60分 40分 20分
内 容:
验证码:
关于本站 | 网站帮助 | 广告合作 | 网站声明 | 友情连接 | 网站地图
本站部分内容来自互联网,如有侵权,请来信告之,谢谢!
Copyright © 2007-2024 biye5u.com. All Rights Reserved.