一个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
随机阅读
- 华为手机的闹钟设置在哪? 华为honor手机闹铃怎么调
- 女性怎么增加雌性激素? 女性 雌性激素
- 传奇里的比奇城在哪里? 比奇省 厨房在哪
- 浠水实验中学什么时候开学 浠水实验中学曾新峰
- a来a去时的词语大全词语 每人来说一个A来A去的词语? 再说一个不A不B和又A又B的词语? 最后能连成句
- 行人止步急切盼望(打一个字) 行人止步(打一字)字谜
- 大话战国虾兵怎么加点 大话战国猪怎么加点
- 52路(北京西站-平乐园),线路图 北京西站到平乐园是做52路吗
- 请问大家,四川哪里有做凉粉用的优质豌豆粉卖,要有豌豆香味的,谢谢 豌豆粉那里出售
- 正月十五也叫发财饭吗 正月十五这一天,不能做什么事?
- 什么打印机适合打印卡片纸 喷墨打印机可以打卡片吗
- 思维内容障碍的护理要点 躁狂症的护理要点是什么?
- 碘的最低氧化值 请问鸡油、鸭油的酸价、碘价、过氧化值正常情况应该是多少呢?
- 山东省郓城县水堡乡赵楼村 山东省菏泽市郓城县水堡乡生活在饥饿边缘的家庭大人不能动,小孩子还很小,怎样吃饱饭?
- 以水和金为财的美业店名字 美容院如何转型与发展?
- 秋水仙碱怎样用药才不伤及肠胃 秋水仙碱副作用太大,肠胃受不了怎么办?
- 濮阳濮水公园 从濮阳市一高到濮水公园坐几路公交
- 丙酸氯倍他索软膏的副作用是什么? 丙酸倍氯倍他索副作用
- 假面骑士龙骑里面的假面骑士铁兵的生存形态是哪集出场的啊! 假面骑士龙骑龙骑生存形态
- 正切函数和余切函数怎么求定义域 反正弦函数,反余弦函数,反正切函数,反余切函数的定义域和值域是什么啊?