A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wudigod12 中级黑马   /  2015-7-24 02:16  /  250 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 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;
        }
}
在百度上看到的代码,自己重写了一遍.

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马