題目:有1、2、3、4個(gè)數(shù)字,能組成多少個(gè)互不相同且無(wú)重復(fù)數(shù)字的三位數(shù)?都是多少?程序分析:可填在百位、十位、個(gè)位的數(shù)字都是1、2、3、4。組成所有的排列后再去 掉不滿(mǎn)足條件的排列。
1 回答
已采納

阿旭_
TA貢獻(xiàn)217條經(jīng)驗(yàn) 獲得超353個(gè)贊
import?java.util.ArrayList; import?java.util.HashSet; import?java.util.List; import?java.util.Set; public?class?Test33?{ public?static?void?main(String[]?args)?{ /*?1、遍歷所有可能性,利用進(jìn)制窮舉法,算上重復(fù)的有4的3次冪個(gè)?*/ aa:?for?(int?i?=?0;?i?<?Math.pow(4,?3);?i++)?{// /*?2、將遍歷的每一個(gè)十進(jìn)制值,轉(zhuǎn)換成相應(yīng)的3位4進(jìn)制數(shù)?*/ String?str?=?"00"?+?Integer.toString(i,?4);//?去掉重復(fù)的 str?=?str.substring(str.length()?-?3); /*?3、利用Set集合內(nèi)部去重,若發(fā)現(xiàn)已添加過(guò)則去掉,這個(gè)數(shù),重新回到下一個(gè)i分析?*/ Set<String>?mSet?=?new?HashSet<String>(); for?(int?j?=?0;?j?<?str.length();?j++)?{ if?(!mSet.add(str.charAt(j)?+?""))?{ continue?aa;//?已存在,遍歷下一個(gè)數(shù)字 } } /*?4、?打印這個(gè)可能性?*/ for?(int?j?=?0;?j?<?str.length();?j++)?{ System.out.print((char)?(str.charAt(j)?+?1)?+?(j?==?str.length()?-?1???"\n"?:?"?")); } } } }
添加回答
舉報(bào)
0/150
提交
取消