一个JAVA编程求助:用递归方法求n(n=3)个数的无重复全排列 给你个思路:函数内判断 if(元素个数=2){ 打印结果:元素1,元素2;打印结果:元素2,元素1;} else { 打印结果:元素1,递归本函数(其他元素);打印结果:递归本函数(其他。在java环境中用递归方法求n个数的无重复全排列,n=3。 给你个思路:函数内判断if(元素个数=2){打印结果:元素1,元素2;打印结果:元素2,元素1;} else {打印结果:元素1,递归本函数(其他元素);打印结果:递归本函数(其他元素),元素1;}JAVA中递归排序的问题。 递归排序public class Demo{public void sortArray(int[]array,int m,int n){if(m>;0){if(array[n][n-1]){swap(array,n);}if(n>;=m){sortArray(array,m-1,1);}else{sortArray(array,m,n+1);}}}void swap(int[]array,int k){int temp=array[k];array[k]=array[k-1];array[k-1]=temp;}public void showArray(int[]array){for(int i=0;i;i+){System.out.println(array[i]);}}public static void main(String[]args){Demo demo=new Demo();int[]a=new int[]{3,5,1,2,8,33,22,11,0};demo.sortArray(a,a.length-1,1);demo.showArray(a);}}java全排列递归算法 可迭代的全排列 测试代码在补充发出 这里发不下了*现在这个电脑只有Jdk 直接拿以前写的代码改的 http://wenwen.soso.com/z/q124605836.htm *异常没有处理 目前仅支持 int[]。用java语言把abcd的全排列算法(递归),改成非递归求全排列,递归算法如下: public 最快能想到的就是用四重循环实现。java全排列递归算法 思路:先有一个起始排列,如1234.从后面扫描,直到找到a[k],a[k][k+1];再从后面扫描,直到找到a[j],这里有 a[k][j]。交换a[k],a[j].再把a[k+1],.a[n-1]排序(从小到大),即得到了一个排列,再循环下去,直到找出所有的排序。用C语言的,参考下:http://user.qzone.qq.com/646203846/infocenter?ptlang=2052Java数组的全排列,里面布尔类型的数组vis[ ],在递归算法里起了什么作用,递归那块理解不了,求详细解答 不要急于看代码,你心理要知道全排列的思路,不注重思路是很多程序员易犯的错误。全排列算法:如果我求得固定第一位后的排列,那么全部排列就可以求出,固定第一位有10种可能,可以循环求得。如果我求得固定第二位后的排列,固定第一位后的排列就可以求出,固定第二位有9种可能,可以循环求得。如果我求得固定第10位后的排列,固定第9位后的排列就可以求出,固定第10位有1种可能,可以循环求得。这很明显是递归的算法。static void dfs(int start,int end,int num){/为全部排列的集合,start为数字的位置,end为最后一位,num多余的if(start=end){/当前的数字位置为最后一位时,说明,一个序列已经生成for(int i=1;i;i+)System.out.print(a[i]+\"\");输出序列System.out.println();}else{/序列没有生成时for(int i=1;i;i+){if(vis[i])/i是否在前面使用过continue;如果是直接跳过a[start]=i;确定start位置的数字,当start为1时就是确定第一位,有10种可能vis[i]=true;设置i为已使用状态,避免下一位使用idfs(start+1,end,num);求得确定start位后的全部序列vis[i]=false;设置i为未使用状态}}java中,用递归方法求n个数的无重复全排列,n=3。 程序如下所示,输入格式为:53 1 2 1 2第一行是数字个数,第二行有n个数,表示待排列的数,输入假设待排序的数均为非负数。import java.io.File;import java.io.FileNotFoundException;import java.util.Arrays;import java.util.Scanner;public class Main {static final int maxn=1000;int n;数组元素个数int[]a;数组boolean[]used;递归过程中用到的辅助变量,used[i]表示第i个元素是否已使用int[]cur;保存当前的排列数递归打印无重复全排列,当前打印到第idx位void print_comb(int idx){if(idx=n){/idx=n时,表示可以将cur输出for(int i=0;i;i){if(i>;0)System.out.print(\"\");System.out.print(cur[i]);}System.out.println();}int last=-1;因为要求无重复,所以last表示上一次搜索的值for(int i=0;i;i){if(used[i])continue;if(last=-1|a[i]。last){/不重复且未使用才递归下去last=a[i];cur[idx]=a[i];回溯法used[i]=true;print_comb(idx+1);used[i]=false;}}}public void go()throws FileNotFoundException{Scanner in=new Scanner(new File(\"data.in\"));读取数据并排序n=in.nextInt();a=new int[n];for(int i=0;i;i)a[i]=in.nextInt();。java全排列递归算法一个小问题 是真心没看懂你再说什么什么叫先输入要求输入的字符个数?你这原题 或者 原需求是什么 你写出来我给你CODE
随机阅读
- 外汇专有名词 由普通名词变的专有名词前面加贯词
- 汉中有哪些必去的旅游景点? 汉中周边四天时间去哪玩
- 不按要求报告或者不如实报告个人去向,属于违反哪种纪律行为? 不按要求报告或者不如实报告个人去向属于违反
- 房子已过户银行不放款怎样处理 房子已经过户 银行不放款
- 秦的发源地在哪? 毛家坪遗址先秦文化
- 学习数学,意义何在? 反比例函数课标要求
- 莞湖方特水上乐园 芜湖方特水上乐园多少钱几点开始几点结束
- 富裕县下派干部 你能说一说在生产队,被派过饭的故事吗?
- 大连哪里可以赶海,市区出发当天来回的? 瓦房店赶海的地方在哪里
- 世界运动童鞋品牌 中国童鞋十大品牌是?
- 人与人之间的沟通经常存在障碍,具体来说包括哪些? 沟通的障碍是思维不同
- 四大银行哪个银行工作服最好 四大国有银行的工作服哪家好
- elizabeth olsen 红杏出墙 《达芬奇密码》里面讲的历史、宗教是真的吗?
- ps合并图层有什么用?ctrl+e的作用究竟是什么?为什么要合并图层?
- 杭州 武林路 男装 休闲 请问杭州银泰武林店5楼男装有个品牌
- 八纵八横连接的原因 八纵八横高铁网最长一横全线要通啦!这给人们带来了什么好处?
- 在佛山西樵影视城怎样坐汽车回中山方便?知道的请回,谢谢! 从中山至佛山西樵影视城
- 人力资源部的绩效考核内容有哪些 公共资源交易中心绩效目标申报
- 被质疑人对废标提出质疑 我的标书漏签一个名,废标合理吗?有法律依据提出质疑?
- 东方project中有哪些细思恐极的内容? 变身星熊勇仪的小说