【算法提高—蓝桥杯】阮小二买彩票
【Description】題目描述
在同學(xué)們的幫助下,阮小二是變的越來越懶了,連算賬都不愿意自己親自動(dòng)手了,每天的工作就是坐在電腦前看自己的銀行賬戶的錢是否有變多。可是一段時(shí)間觀察下來,阮小二發(fā)現(xiàn)自己賬戶的錢增長好慢啊,碰到節(jié)假日的時(shí)候連個(gè)銅板都沒進(jìn),更郁悶的是這些天分文不進(jìn)就算了,可恨的是銀行這幾天還有可能“落井下石”(代扣個(gè)人所得稅),看著自己賬戶的錢被負(fù)增長了,阮小二就有被割肉的感覺(太痛苦了!),這時(shí)阮小二最大的愿望無疑是以最快的速度日進(jìn)斗金,可什么方法能夠日進(jìn)斗金呢?搶銀行(老本行)?不行,太危險(xiǎn),怕有命搶沒命花;維持現(xiàn)狀?受不了,摟錢太慢了!想來想去,抓破腦袋之后,終于想到了能快速發(fā)家致富的法寶----買彩票,不但掙了錢有命花,運(yùn)氣好的話,可以每天中他個(gè)幾百萬的,豈不爽哉!抱著這種想法,阮小二開始了他的買彩票之旅。想法是“好的”(太天真了OR 太蠢了),可是又發(fā)現(xiàn)自己的數(shù)學(xué)功底太差,因?yàn)椴恢罃?shù)字都有哪些組合排列?那現(xiàn)在就請同學(xué)們寫個(gè)遞歸程序,幫助阮小二解決一下這個(gè)問題吧!
【Input】輸入描述:
不超過6位數(shù)的正整數(shù)N,注意:構(gòu)成正整數(shù)N的數(shù)字可重復(fù)
【Output】輸出描述:
組成正整數(shù)N的所有位數(shù)的全排列,這些排列按升序輸出,每個(gè)排列占一行。
注意:輸出數(shù)據(jù)中不能有重復(fù)的排列
輸入樣例:
123輸出樣例:
123
132
213
231
312
321
HINT:時(shí)間限制:1.0s 內(nèi)存限制:512.0MB
這道題已經(jīng)說明要用遞歸程序,所以要用遞歸來解決。
思路:回溯法
完整代碼:
import java.util.Arrays; import java.util.Scanner; public class Reback_sort {static void swap(int i,int j,char a[]) {char temp=a[i];a[i]=a[j];a[j]=temp;}static public void f(int k,char a[]) {if(k==a.length) {System.out.println(a);return;}for(int i=k;i<a.length;i++) {if(i!=k&&a[i]==a[k]) continue;swap(i,k,a); //換回到原來的位置f(k+1, a);swap(i,k,a); //互換位置}}public static void main(String []args) {Scanner reader=new Scanner(System.in);String n=reader.nextLine();char a[]=n.toCharArray(); //將輸入內(nèi)容轉(zhuǎn)入數(shù)組Arrays.sort(a); //對數(shù)組內(nèi)容進(jìn)行排序f(0,a);} }總結(jié)
以上是生活随笔為你收集整理的【算法提高—蓝桥杯】阮小二买彩票的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Nat网络地址转换实验
- 下一篇: STM32之W5500:掉线重联????