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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

九亿少女的梦

中级黑马

  • 黑马币:56

  • 帖子:12

  • 精华:0

题目:用1,2,3,4这四个数字,用java写一个main函数,打印出所有不同的排列。如:1234,1243等。要求:4不能在第一位,1和3不能相连
来自宇宙超级黑马专属安卓客户端来自宇宙超级黑马专属安卓客户端

5 个回复

倒序浏览
public class Test {
    public static void main(String[] args) {
                for(int i=1;i<4;i++){
                        for(int j=1;j<=4;j++){
                                for(int k=1;k<=4;k++){
                                        for(int m=1;m<=4;m++){
                                                if(i!=j&&i!=k&&i!=m&&j!=k&&j!=m&&k!=m){
                                                        if(i==1&&j!=3 || j==1&&i!=3&&k!=3 || k==1&&j!=3&&m!=3 || m==1&&k!=3){
                                                        System.out.println(i*1000+j*100+k*10+m);
                                                        }
                                                }
                                        }
                                }
                        }
                }
        }
}
回复 使用道具 举报
这种算法题还是自己研究的好,锻炼思维能力,告诉你答案反而失去了做题的意义,你说呢
来自宇宙超级黑马专属安卓客户端来自宇宙超级黑马专属安卓客户端
回复 使用道具 举报
感觉不是很难吧
回复 使用道具 举报
import java.util.ArrayList;
import java.util.Random;

/*题目:用1,2,3,4这四个数字,用java写一个main函数,打印出所有不同的排列。如:1234,1243等。要求:4不能在第一位,1和3不能相连*/
public class Test4 {
        public static void main(String[] args) {
                ArrayList<Integer> list = new ArrayList<>();       
                list.add(1);
                list.add(2);
                list.add(3);
                list.add(4);
                ArrayList<Integer> newList = new ArrayList<>();       
                newList.addAll(list);                                //        newList临时存放list里面所有元素
               
                Random r = new Random();
               
                int count=0;
                while(count<24){                                                //总共能产生4*3*2*1种组合
                        StringBuilder sb = new StringBuilder();
                        for(int i=0;i<4;i++){                                        //for循环用来产生一个随机四位数
                               
                                int index=r.nextInt(list.size());        //随机产生一个角标,用来从list中拿出一个元素
                               
                                while(index==3){                                //第一次循化,如果角标是3(对应的元素是4)
                                        index=r.nextInt(list.size());        //重新产生生成一个角标直到不是3
                                }
                                sb.append(list.get(index));                        //将这个元素拼接到sb后面
                                list.remove(index);                                        //拿出一个元素后就把该元素从list中拿出去
                        }
                       
                        list.addAll(newList);                                //重新把临时newList元素添加到list中,用于下次循环
                        count++;
                        for(int i=0;i<sb.length()-1;i++){
                                if(Integer.parseInt(sb.charAt(i)+"")+Integer.parseInt(sb.charAt(i+1)+"")==4){        //若果相邻两个元素相加等于4(1+3),就继续下次循环
                                        continue;
                                }else{
                                        System.out.println(sb);                //如果满足条件,就打印这个四位数
                                }
                        }
                       
                }
               
        }
}
回复 使用道具 举报
大兄弟  不好意思  刚那代码有点问题  我先找找
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马