黑马程序员技术交流社区

标题: 刚看到的一道有趣的题 [打印本页]

作者: wudigod12    时间: 2015-7-24 02:16
标题: 刚看到的一道有趣的题
本帖最后由 wudigod12 于 2015-7-24 02:23 编辑

题1:用1、2、3、4这四个数字,用java写一个main函数打印出所有不同的排序,如:1234,1243等要求:“4”不能在第一位,“1”与“3”不能相连

package test;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class test10 {
        public static void main(String[] args){
                List<Integer> list = Arrays.asList(1,2,3,4);
                List<String> destList = fun("",list);
               
                System.out.println(destList.size());
               
                for(String str:destList){
                        System.out.println(str);
                }
        }
        
        public static List<String> fun(String str,List<Integer> list){
                List<String> destList = new ArrayList<String>();
               
                if(list.size() == 0){
                        destList.add(str);
                        return destList;
                }
               
                for(Integer num:list){
                        String newStr = str + num;
                        List<Integer> newNumList = new ArrayList<Integer>();
                        newNumList.addAll(list);
                        newNumList.remove(num);
                        
                        List<String> newDestList = fun(newStr,newNumList);
                        
                        for(String newResult:newDestList){
                                if(!destList.contains(newResult))
                                        if(!newResult.startsWith("4") && !newResult.contains("13") && !newResult.contains("31"))
                                                destList.add(newResult);
                        }
                }
               
                return destList;
        }
}



题2:用1、2、2、3、4、5这六个数字,用java写一个main函数,打印出所有不同的排列,如:512234、412345等,要求:"4"不能在第三位,"3"和"5"不能相连
package test;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class test10 {
        public static void main(String[] args){
                List<Integer> list = Arrays.asList(1,2,2,3,4,5);
                List<String> destList = fun("",list);
               
                System.out.println(destList.size());
               
                for(String str:destList){
                        System.out.println(str);
                }
        }
        
        public static List<String> fun(String str,List<Integer> list){
                List<String> destList = new ArrayList<String>();
               
                if(list.size() == 0){
                        destList.add(str);
                        return destList;
                }
               
                for(Integer num:list){
                        String newStr = str + num;
                        List<Integer> newNumList = new ArrayList<Integer>();
                        newNumList.addAll(list);
                        newNumList.remove(num);
                        
                        List<String> newDestList = fun(newStr,newNumList);
                        
                        for(String newResult:newDestList){
                                if(!destList.contains(newResult))
                                        if(!(newResult.indexOf("4") == 2) && !newResult.contains("35") && !newResult.contains("53"))
                                                destList.add(newResult);
                        }
                }
               
                return destList;
        }
}
在百度上看到的代码,自己重写了一遍.





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