回溯法也称为试探法,该方法首先暂时放弃关于问题规模大小的限制,并将问题的候选解按某种顺序逐一枚举和检验。在回溯法中,放弃当前候选解,寻找下一个候选解的过程称为回溯。
本实例是用回溯法输出n个自然数中以r个数全排列。代码如下:

 1 public void Arrange(int n, int r)  2     int i = 0, j;  3     string s;  4     int[] a = new int[n];  5     a = 1;  6     while (true)  7     {  8         if ((a - i) <= (n - r + 1))  9         { 10             if (i == (r - 1)) 11             { 12                 s = ""; 13                 for (j = 0; j < r; j++) 14                 { 15                     s = s + Convert.ToString(a[j]) + ","; 16                 } 17                 // Memo1.Lines.Append(Trim(s)); 18                 Console.WriteLine(s); 19                 a = a + 1; 20                 continue; 21             } 22             i = i + 1; 23             a = a[i - 1] + 1; 24         } 25         else 26         { 27             if (i == 0) 28             { 29                 break; 30             } 31             i = i - 1; 32             a = a + 1; 33         } 34     }

转载于:https://www.cnblogs.com/cnjava/archive/2011/12/31/2308363.html

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

  1. n个自然数中取r个数的组合

    例:找出n个自然数(1, 2, 3,..., n)中取r个数的组合,设计递归算法进行求解.例如,当n=5, r=3时,从大到小排列的组合数为: 5   4   3    5   4   2    5  ...

  2. 找出n个自然数(1,2,3,…,n)中取r个数的组合(C语言)

    #include<stdio.h> int main() {int n,r;int i,j,k;int t=0;//输入1~n所有的r个数的组合,其中要求三个数不能相同,且后一位要大于前一 ...

  3. 【实习笔试面试题】2013网易互联网实习笔试算法题-找出最大连续自然数个数

    找出最大连续自然数个数 搜集者:江南烟雨 E-Mail:xiajunhust@gmail.com 本题为网易互联网暑期实习生笔试算法题. 凭记忆记录下来的题目,如违反网易版权请邮件联系,本人会删除. ...

  4. C语言:有N个数从小到大的顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个数。如果不在数组中,打印“not found”。

    /*有N个数从小到大的顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个数.如果不在数组中,打印"not found".*/#include<stdio ...

  5. c语言 有15个数按由大到小,C++ 有15个数按由大到小顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则输出“无此数”。...

    有15个数按由大到小顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值.如果该数不在数组中,则输出"无此数". 以下是此题的[c++源代码],需要[c ...

  6. 写几个函数: ①输入10个职工的姓名和职工号; ②按职工号由小到大顺序排序,姓名顺序也随之调整; ③要求输入一个职工号,用折半查找法找出该职工的姓名,从主函数输入要查找的职工号,输出该职工姓名。

    写几个函数: ①输入10个职工的姓名和职工号: ②按职工号由小到大顺序排序,姓名顺序也随之调整: ③要求输入一个职工号,用折半查找法找出该职工的姓名,从主函数输入要查找的职工号,输出该职工姓名. #i ...

  7. 编写一个递归算法,找出从自然数1,2,3,…,n中任取r个数的所有组合。例如n=5,r=3时所有组合为543,542,541,532,531,521,432,431,421,321。

    编写一个递归算法,找出从自然数1,2,3,-,n中任取r个数的所有组合.例如n=5,r=3时所有组合为543,542,541,532,531,521,432,431,421,321. 若设这n个自然数 ...

  8. 找出不在数组中的最小自然数

    /*** 找出不在数组中的最小自然数* 规则:tree[i] = i+1{1,2,...,length}* @param tree* @return*/ public int findMin(int[ ...

  9. 已知2个整形数据a,b.不使用if,?:以及其他任何条件判断的语法,找出a跟b中数据的大者。

    已知2个整形数据a,b.不使用if,?:以及其他任何条件判断的语法,找出a跟b中数据的大者. 答案: int max(int a,int b) { return (a+b+abs(a-b))/2; } ...

最新文章

  1. Hadoop Yarn任务优先级(作业优先级、应用优先级)设置
  2. boost::mpl模块实现comparison相关的测试程序
  3. 名为“ds”的+DataTable+已属于此+DataSet
  4. 发邮件请领导审批文件怎么说_住建部:1月1日起,两项甲级资质实行告知承诺审批!...
  5. 计算机网络(韩立刚网课笔记)
  6. 使用webstorm操作git
  7. ubuntu 14.04 root破解
  8. 复制整个文件夹下的文件(无限递归复制子文件夹)
  9. Android仿人人客户端(v5.7.1)——消息中心视图的实现
  10. jpa+hibernate整合达梦数据库(附源码)
  11. matlab中clc、clear、clear all、clf、close、close all命令
  12. SQLServer过期解决步骤
  13. Elasticsearch - 短语匹配(match_phrase)以及slop参数
  14. JDK11源码学习05 | HashMap类
  15. 计算机算法在生物信息学中的应用,引力场算法及其在生物信息学中的应用
  16. win10 内存清理
  17. Python编程从入门到实践 -----第4章、操作列表(课后习题答案)
  18. 【MySQL】 # MySQL相关面试题
  19. 为什么你的IntelliJ IDEA没有别人的好用?差距在这...
  20. Windows——就近共享

热门文章

  1. IDEA高级技巧:集成JIRA、UML类图插件、SSH、FTP、Database管理
  2. 收集20个经典的Java面试题
  3. 算法【二分查找】(数组)
  4. 使命召唤ios_使命召唤的精巧UI:战地
  5. qt ui指针和本类对象_您需要了解的有关UI设计的形状和对象的所有信息
  6. 千层套路 - Vue 3.0 初始化源码探秘
  7. GreenPlum数据库故障恢复测试
  8. SQL Server Management Studio清除历史登陆记录
  9. Python-循环控制--个人课堂笔记
  10. leetcode——Lowest Common Ancestor of a Binary Tree