一个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
随机阅读
- 关于我国行政法律关系主体的说法错误的是 关于我国司法解释,下列哪些说法是错误的?
- 请问新化县城有图书馆吗 新化南门药店大桥店
- “安全第一、预防为主、综合治理”的含义 安全第一 预防为主 科学管理
- 集水井的坑为什么做的比集水井要大很多? 集水井(坑)的名词解释
- 汽车气动门锁的原理图 气动机动车原理
- 佳贝艾特金装和可瑞康对比 佳贝艾特和可瑞康区别在哪?哪个更适合宝宝呢
- 国家新规往房将有重大变化 国家小产权房政策 2019小产权房最新政策
- 超流水线和超标量的区别 关于CPU流水线 多发射 超标量 CPU微码 之间 的关系和原理?
- 前天去医院,医生给开了个叫空气波治疗的,说是压力疗法,有没有谁知道什么是空气波啊?我看那个机 医用空气压力波治疗
- 南通跃龙路的汇丰大厦在哪里 汇丰大厦15楼
- 水东街招聘 大城县新华东街瑞丽服装店招聘信息,大城县新华东街瑞丽服装店怎么样?
- 小岛渔村海鲜酒家怎么样 中国哪里是看海的最佳地点?
- 本周末,老师和朋友准备一起到沈阳海洋世界和鸟岛去游玩.我们共有5个大人,2个小孩... 沈阳市鸟导青年计算机学校
- 海南万宁距离三亚市多远 三亚市到万宁市多少公里?
- 乙烯制氯乙烷的化学式 乙烯制氯乙烷的化学方程式
- 试验设计抛物线法 一条抛物线y=x2+mx+n经过点(0,)与(4,). (1)求这条抛物线的解析...
- EVA材料做的鞋子有毒吗? 聚氧化乙烯熔融粘度
- 对驻村工作组成员要求 驻村工作组一般都派什么样的人去
- 牡丹离锦二乔是什么样花 洛阳牡丹花的作文
- 春秋战国时,合纵连横指的是什么 战国合纵连横策略成语