亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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"?:?"?"));
			}
		}
	}
}

http://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 關注
  • 1850 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號