導航:首頁 > 源碼編譯 > java整數拆分演算法

java整數拆分演算法

發布時間:2023-08-25 19:00:54

java實現 整數拆分 希望有個演算法

我給你寫一個,要給分的呦。代碼如下:

import java.util.ArrayList;
import java.util.List;

public class Testxxx {
public void chaifen(int n){
List list = new ArrayList();
chaifendigui(n,list);
}
public void chaifendigui(int n, List list) {
// TODO Auto-generated method stub

for (int i = 1; i <= n; i++) {

System.out.print(i+" ");
if(n>i){
List list2 = new ArrayList();
list2.addAll(list);
list2.add(i);
chaifendigui(n-i,list2);
}else{
System.out.println();
for (int j = 0; j < list.size()-1; j++) {
System.out.print(list.get(j)+" ");
}
}

}
}
public static void main(String[] args) {
Testxxx xx = new Testxxx();
xx.chaifen(10);
}
}

⑵ 用java怎樣將一個正整數L隨機拆分成N個正整數

import java.util.Random;

public class Test {
public static void main(String[] args)throws Exception{
random(5, 100);
}

public static void random(int n, int L){
Random rand = new Random();
int temp = L;
for(int i = 0, j; i < n-1; i++){
j = rand.nextInt(temp-1) + 1;
temp -= j;
System.out.println(j);
}
System.out.println(temp);
}
}

⑶ java 中怎樣拆分一個整數 並賦值給一個數組

你的意思是不是吧一個數值,拆分成很多單個的數,給你個思路,我這里沒有JAVA環境
1。將這個數值用tostring方法轉換成string類型
2,利用for循環,使用substring方法吧字元串分割成單個字元,循環次數可以借鑒 字元串長度-1
3.在循環內將每個字元賦給數組
..小技巧:for循環的循環條件可以從0開始,循環到字元串長度-1為止,這樣的話,數組賦值就可以從相應的下標0開始了,數組的長度,自己把握,因為JAVA不支持動態數組

⑷ java將一個數按照規定拆分成幾個數的和

除以7必然涉及到保留兩位小數的四捨五入問題,這里使用java的BigDecimal來處理除法,四捨五入的保留方法使用RoundingMode.HALF_EVEN:

RoundingMode.CEILING:取右邊最近的整數

RoundingMode.DOWN:去掉小數部分取整,也就是正數取左邊,負數取右邊,相當於向原點靠近的方向取整

RoundingMode.FLOOR:取左邊最近的正數

RoundingMode.HALF_DOWN:五舍六入,負數先取絕對值再五舍六入再負數

RoundingMode.HALF_UP:四捨五入,負數原理同上

RoundingMode.HALF_EVEN:這個比較繞,整數位若是奇數則四捨五入,若是偶數則五舍六入

我認為無論如何都是無法避免四捨五入導致的精度變化的問題,解決方法只能在最後的結果強行再舍掉小數位數:


public class Main {
public static void main(String[] args) {
BigDecimal bigDecimal = new BigDecimal("10");
BigDecimal seven = new BigDecimal("7");

BigDecimal b1 = bigDecimal.divide(seven, 2, RoundingMode.HALF_EVEN).multiply(new BigDecimal("2"));
System.out.println(b1);
BigDecimal b2 = bigDecimal.divide(seven, 2, RoundingMode.HALF_EVEN);
System.out.println(b2);
BigDecimal b3 = bigDecimal.divide(seven, 2, RoundingMode.HALF_EVEN).multiply(new BigDecimal("2"));
System.out.println(b3);
BigDecimal b4 = bigDecimal.divide(seven, 2, RoundingMode.HALF_EVEN);
System.out.println(b4);
BigDecimal b5 = bigDecimal.divide(seven, 2, RoundingMode.HALF_EVEN);
System.out.println(b5);

System.out.println(b1.add(b2).add(b3).add(b4).add(b5).setScale(0,RoundingMode.HALF_EVEN));
}
}

⑸ 用java將一個正整數拆分成若干個正整數的和,問有多少種分法

無聊了做著玩玩,用遞歸法,比如2=1+1,3=1+(2的所有組成法),5需要分解1+4,2+3,因為3+2和2+3是一樣的,for循環只要到i<=n/2就夠了.
然後就是剔除1+1+2和1+2+1的情況,繼承set的特性重寫了Composition(每個拆分的方式)的equals.
懶得讀取n值了,直接在main裡面賦值給n

public class Composition extends ArrayList<Integer> {
@Override
public boolean equals(Object other){
Composition comp = (Composition)other;
Collections.sort(this);
Collections.sort(comp);
if(this.isEmpty() || comp.isEmpty() || this.size() != comp.size())
return false;
for(int i=0; i<this.size(); i++)
if(this.get(i) != comp.get(i))
return false;
return true;
}

@Override
public int hashCode() {
return 0;
}
}

public class main {

public static void main(String[] args) {
int n = 6;
System.out.println(toStr(calc(n)));
}

public static Set<Composition> calc(int n) {
Set<Composition> possibility = new HashSet<Composition>();
Composition composition = new Composition();
switch (n) {
case 1:
composition.add(1);
possibility.add(composition);
return possibility;
case 2:
composition.add(1);
composition.add(1);
possibility.add(composition);
return possibility;
default:
for (int i = 1; i <= n / 2; i++) {
composition = new Composition();
composition.add(i);
composition.add(n - i);
possibility.add(composition);
if (i <= n - i) {
Set<Composition> partial_pos = calc(n - i);
for (Composition pos : partial_pos) {
pos.add(i);
possibility.add(pos);
}
}
}
return possibility;
}

}

public static String toStr(Set<Composition> possibility) {
String str = "total : " + possibility.size() + "\n";
for (Composition pos : possibility)
str += toStr(pos);
return str;
}

public static String toStr(Composition composition) {
String str = composition.get(0) + "";
for (int i = 1; i < composition.size(); i++)
str += (" + " + composition.get(i));
str += "\n";
return str;
}
}

⑹ 用java怎樣將一個正整數L隨機拆分成N個正整數

設定先定義一個有序數組K,數組K里全是質數,然後用L做被除數,用數組K的元素依次做除數(每次整除後得到的商都繼續用這個方法),直到L被完全分解,然後將這些除數存入數組N,接著用數組N里的數相乘(每個元素有且只有使用一次)得到一些乘積,將這些乘積都存入數組M。得到的數組M就是結果

閱讀全文

與java整數拆分演算法相關的資料

熱點內容
程序員相親被刪除微信 瀏覽:790
centos命令窗口 瀏覽:596
編譯器有幾個好用的 瀏覽:500
資料庫和網站如何搭載伺服器 瀏覽:154
網路流理論演算法與應用 瀏覽:795
java和matlab 瀏覽:388
釘釘蘋果怎麼下app軟體 瀏覽:832
php網站驗證碼不顯示 瀏覽:859
鋁膜構造柱要設置加密區嗎 瀏覽:344
考駕照怎麼找伺服器 瀏覽:884
阿里雲伺服器如何更換地區 瀏覽:972
手機app調音器怎麼調古箏 瀏覽:503
銳起無盤系統在伺服器上需要設置什麼嗎 瀏覽:19
紅旗計程車app怎麼應聘 瀏覽:978
如何編寫linux程序 瀏覽:870
吉利車解壓 瀏覽:248
java輸入流字元串 瀏覽:341
安卓軟體沒網怎麼回事 瀏覽:785
dvd壓縮碟怎麼導出電腦 瀏覽:275
冒險島什麼伺服器好玩 瀏覽:543