黑马程序员技术交流社区

标题: 求5个数字的全排列,用java怎么实现呢? [打印本页]

作者: HM张博文    时间: 2013-6-25 23:02
标题: 求5个数字的全排列,用java怎么实现呢?
本帖最后由 孙百鑫 于 2013-6-27 07:51 编辑

任意给定5个不重复的数字,比如说1,2,3,4,5,打印出没有重复数字的5位数,比如说12345,54321,……用java怎么实现呢?
注:在数学里面叫A(5,5)=120,就是总共有120种情况,但我要的不是有多少种情况,还是要把他所有的120种情况都打印出来。

作者: Sofoul    时间: 2013-6-25 23:49
public class Testc1{
        public static void main(String[] args){
            int[] a = new int[]{1,2,3,4,5};
            int n = 1;
            for (int i = 0; i<a.length; i++){
                    for (int j = 0; j<a.length; j++){
                            for (int k = 0; k<a.length; k++)
                            if((a[i] != a[j]) && (a[i] != a[k]) && (a[j] != a[k])){
                                    System.out.println(n+":"+a[i] + "\t" + a[j] + "\t" + a[k]);
                                    n++;
                            }
                           
                    }
                   
            }
套这个格式去自己加,这个是三位数的,我懒得去弄了
作者: 8047107    时间: 2013-6-25 23:57
Sofoul 发表于 2013-6-25 23:49
public class Testc1{
        public static void main(String[] args){
            int[] a = new int[]{1,2,3,4,5};

厉害 我想了一会没什么思路~原来要三个for
作者: 刘_鑫    时间: 2013-6-25 23:58
{:soso_e179:}
作者: 8047107    时间: 2013-6-25 23:58
5位岂不是5个for~~~~~
作者: 王靖远    时间: 2013-6-26 01:49
递归应该可以做的。

作者: 王靖远    时间: 2013-6-26 02:38
  1. import java.util.*;

  2. public class QuanPaiLie{
  3.         private static int NUM = 5;
  4.         public static void main(String[] args){
  5.                 Integer[] integer = {1,2,3,4,5};
  6.                
  7.                 List<Integer>list = new ArrayList<Integer>(Arrays.asList(integer));
  8.                
  9.                 method(list,new ArrayList<Integer>());
  10.         }
  11.         private static void method(List<Integer>list,List<Integer>list1){
  12.        
  13.                
  14.                 if(list1.size()== NUM){
  15.                         for(Integer i :list1){
  16.                                 System.out.print(i);
  17.                                
  18.                         }
  19.                         System.out.println();
  20.                         return;
  21.                 }
  22.                
  23.                 //System.out.println(list.size());
  24.                 for(int x=0;x<list.size();x++){
  25.                        
  26.                         List<Integer>newList = new ArrayList<Integer>(list);
  27.                         List<Integer>newList1 = new ArrayList<Integer>(list1);
  28.                         newList1.add(newList.get(x));
  29.                         newList.remove(x);
  30.                         method(newList,newList1);
  31.                        
  32.                 }
  33.                        
  34.                        
  35.                
  36.         }
  37. }
复制代码

作者: 郭伟杰    时间: 2013-6-26 12:34
import java.util.*;
public class ageDemo {
        public static void main(String[] args) {
                Set<Integer> s=new TreeSet<Integer>();//用SET保证集合原素不会重复
                for(int i=12345;i<=54321;i++)//5个数组成的数的范围
                {
                        //把数变为字符     如果字符同时包含1,2,3,4,5则加进集合里面
                        if((i+"").contains("1")&&(i+"").contains("2")&&(i+"").contains("3")&&(i+"").contains("4")&&(i+"").contains("5"))
                        s.add(i);
                }
                System.out.println(s.size());//打印集合长度
                //打印几何元素
                for(Integer i:s)
                {
                        System.out.println(i);
                }
        }
}
求技术分啊!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
作者: 孙百鑫    时间: 2013-6-27 07:51
楼主您好。我已将您的帖子改成已解决。如果帖子发布长时间没加分。及时联系我。以免漏分的情况发生
作者: HM张博文    时间: 2013-6-27 15:31
谢谢楼上的热心观众哦
作者: 郑锐    时间: 2013-6-28 09:37
郭伟杰 发表于 2013-6-26 12:34
import java.util.*;
public class ageDemo {
        public static void main(String[] args) {

你这个思路太牛了,佩服佩服啊!
作者: Just_Only    时间: 2013-6-28 10:35
王靖远 发表于 2013-6-26 02:38

哥们,很牛啊。。。
作者: 王靖远    时间: 2013-6-28 10:39
郭伟杰 发表于 2013-6-26 12:34
import java.util.*;
public class ageDemo {
        public static void main(String[] args) {

厉害。。不过12345变成abcde就没法做,。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2