为了账号安全,请及时绑定邮箱和手机立即绑定

java 练习11

java 练习11

狼顾之相1995 2016-09-21 08:49:47
题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。
查看完整描述

6 回答

已采纳
?
阿旭_

TA贡献217条经验 获得超353个赞

public class Test38 {
	public static void main(String[] args) {
		for (int i = 0, j = 0, k = 0; i < Math.pow(4, 3); i++) {// 遍历所有可能性
			String str = (String.format("%03d", Long.parseLong(Integer.toString(i, 4))));
			for (j = 0, k = 0; j < str.length(); j++) {
				k = str.replace("" + str.charAt(j), "").length() == 2 ? k + 1 : k;
			}
			for (j = 0; j < str.length() && k == 3; j++) {// 打印这个可能性
				System.out.print((char) (str.charAt(j) + 1) + (j == str.length() - 1 ? "\n" : " "));
			}
		}
	}
}

//img1.sycdn.imooc.com//57e1ecb8000121c103760584.jpg

查看完整回答
1 反对 回复 2016-09-21
?
qq_錵鐦丶落幕_0

TA贡献1条经验 获得超0个赞

int in[]={1,2,3,4};
for (int i=0;i<in.length;i++){
   for (int j=0;j<in.length;j++){
       for (int h=0;h<in.length;h++){
           if (i!=j&&i!=h&&j!=h) {
               System.out.print(in[i]+""+in[j]+""+in[h]);
               System.out.println("");
           }
       }
   }
}

查看完整回答
反对 回复 2018-02-06
?
phg

TA贡献1条经验 获得超0个赞

package recursion;
public class Permutation {
    static int[] Num={1,2,3,4};
    static int[] K=new int[3];
    
 /**
  * @param args
  */
    public static void p(int m){
     if(m==3){
      for(int i=0;i<K.length;i++)   System.out.print(K[i]+" ");      
      System.out.println();
      return;
     }
     for(int j=0;j<Num.length;j++){
      if(Num[j]!=0)  {//前面用过的数用0标记一下
      K[m]=Num[j]; 
      Num[j]=0;
      p(m+1);
      Num[j]=K[m];         //递归出来把原来的数还原
      }
     }
    }
 public static void main(String[] args) {
  // TODO Auto-generated method stub
        p(0);
 }
}

查看完整回答
反对 回复 2016-09-22
?
杜发明

TA贡献202条经验 获得超301个赞

为什么没有人用junit单元测...

查看完整回答
反对 回复 2016-09-21
  • 阿旭_
    阿旭_
    为了方便:回答问题,最好是代码粘过去就能运行。而大多数学习的人都没有学习过junit单元测试方法。
  • 杜发明
    杜发明
    那倒也是,用的话估计也会有人问。不过我看你上面写的代码水平从业肯定不指两三年。
  • 阿旭_
    阿旭_
    你猜对了~( ̄▽ ̄)"
?
夜行水寒

TA贡献5条经验 获得超4个赞

public class test{

public static void main(String[] args) 

{

    int i,j,k;

    int count=0;

    for(i=1;i<5;i++)

    {

        for(j=1;j<5;j++)

        {

            for(k=1;k<5;k++)

            {

                if(i!=j&&j!=k&&i!=k)   

                {

                    System.out.println("数字为:"+i+j+k);  

                    count++;

                    if(count%5==0)

                   {

                      System.out.println(" ");

                    }

                }             

            }

        }

    }

}

}


查看完整回答
反对 回复 2016-09-21
  • 杜发明
    杜发明
    个人认为这个逻辑比上面那个逻辑更简介明了,其实写程序最主要的是让人一看就明白,还好改动。
  • 阿旭_
    阿旭_
    是挺好的,只是不易扩展,工作时间越久越觉得写一段代码,要考虑扩展性,比如这个题,如果是8个数字组成互不重复的8位数,那么可能用这个方法就要追加五个for,但用我那个方法就是改改对应的数字(实际工作是封装方法传参)。
?
慕瓜4807886

TA贡献25条经验 获得超9个赞


int j,k,l,count=0;

for(j=1;j<=4;j++)

for(k=1;k<=4;k++)

for(l=1;l<=4;l++)

{

if(j!=k&&j!=l&&k!=l)

{

system.out.print(j+""+k+""+l);

count++;

}


查看完整回答
反对 回复 2016-09-21
  • 6 回答
  • 0 关注
  • 1770 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信