日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java 数字组合_java解决数字组合问题

發布時間:2025/3/12 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 数字组合_java解决数字组合问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題描述:輸入1~9以內的幾個數字,輸出這些數字的多重組合。

輸入:1,2,3

輸出:

1

2

3

12

13

23

123

問題分析:

當輸入為

1

輸出

1

當輸入為

1 ?2

輸出

1

2

12

當輸入為

1 ?2 ?3

輸出

1

2

3

12

13

23

123

那么可以分析如下

當輸入1 2 3 4時做了以下處理

把上面結果拷貝

1

2

3

12

13

23

123

1

2

3

12

13

23

123

然后在上面的基礎上加上4即結果為

1

2

3

12

13

23

123

1

2

3

12

13

23

123

4

然后接著在拷貝的后面部分加上4,結果為

1

2

3

12

13

23

123

14

24

34

124

134

234

1234

4

然后講以上數字排序輸出,就得到了輸入為[1 2 3 4] 時的結果。

在這個思路的基礎上可以想到用遞歸的方法來做只需要在上一步的基礎之上加上新的數字即可。實現代碼如下:

import java.util.ArrayList;

import java.util.Collections;

public class Number {

/*

* 遞歸函數的輸入函數有兩個,第一個表示輸入數組中第幾個數字,第二個表示輸入數組

* 由于動態數組可以靈活添加元素,因此使用了動態數組來存儲結果

*/

public static ArrayList foo(int i,int[]vec){

//遞歸結束的條件是讀到第一個元素之后返回該元素

if(i==0){

ArrayList list = new ArrayList();

list.add(vec[0]);

return list;

}

else{

//得到上一步的結果

ArrayList nlist = foo(i-1,vec);

int n = nlist.size();

int num = vec[i];

//把輸入數組中此處的元素添加進動態數組

nlist.add(num);

//動態數組中的每一個元素將輸入數組中當前元素放在個位之后追加到動態數組

for(int k=0;k

nlist.add(nlist.get(k)*10+num);

}

return nlist;

}

}

public static void main(String[] args) {

int[] vec = {1,2,3};

int l = vec.length;

ArrayList list = foo(l-1,vec);

Collections.sort(list);

for(int i:list){

System.out.println(i);

}

}

}

以上是我的解題思路,希望多多指教。

總結

以上是生活随笔為你收集整理的java 数字组合_java解决数字组合问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。