import?java.util.Scanner;
站在用戶的角度思考問題,與客戶深入溝通,找到新?lián)峋W(wǎng)站設(shè)計(jì)與新?lián)峋W(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都做網(wǎng)站、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、申請域名、網(wǎng)絡(luò)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋新?lián)岬貐^(qū)。
public?class?numberDiv?{
//?private?static?final?huafen?numberrDiv?=?null;
//?static?int?d[]=new?int[32];
public?static?void?main(String[]?args)?{
System.out.println("請輸入的整數(shù):");
Scanner?sc?=?new?Scanner(System.in);
int?number?=?sc.nextInt();
int?num?=?numberDiv.Division(number,?number,?"");
System.out.println("num="?+?num);
}
public?static?int?Division(int?m,?int?n,?String?str)?{
if?((m?=?0)?||?(n?=?0))
return?0;
if?((m?==?1)?||?(n?==?1))?{
System.out.print(str);
for?(int?i?=?1;?i??m;?i++)?{
System.out.print("1+");
}
System.out.println("1");
return?1;
}
if?(n?==?m)?{
System.out.println(str?+?m);
return?1?+?numberDiv.Division(m,?n?-?1,?str);
}
if?(m??n)?{
int?n1?=?numberDiv.Division(m?-?n,?n,?str?+?n?+?"+");
int?n2?=?numberDiv.Division(m,?n?-?1,?str);
return?n1?+?n2;
}
return?numberDiv.Division(m,?m,?str);
}
}
Division方法返回分解的個(gè)數(shù),所以numberDiv類不需要再定義成員變量static int num=0;。
Division方法中if ((m == 1) || (n == 1))成立時(shí),本次是一個(gè)分解,并且不需要再遞歸分解,所以返回1。
Division方法中if (n == m)成立時(shí),本次是一個(gè)分解,且需要遞歸分解,所以返回1+遞歸分解個(gè)數(shù)。
Division方法中if (m n)成立時(shí),返回兩個(gè)遞歸分解的個(gè)數(shù)之和。
Division方法中最后代碼即為m? n,直接返回遞歸分解的個(gè)數(shù)。
//把123456789分割成123,456,789,
public class A
{
public static void main(String[] args)
{
String str = "123456789";//如果123456789是數(shù)字類型,則可以將其轉(zhuǎn)換為String類型
String str1 = "";
for(int i=0;i9;i++){
str1 += str.charAt(i);
if((i+1)%3 == 0){
str1 += ";";
}
}
System.out.println(str1);
}
}
這個(gè)可以用遞歸來實(shí)現(xiàn)。。。。。代碼如下。。。還是想了很久弄出來的。。。。已經(jīng)測試了的。。。希望能幫到你。。。
import
java.util.Scanner;
public
class
Test
{
public
static
void
huafenD(int
oldData,int
j,
int
n,StringBuffer
result){
StringBuffer
r
=
new
StringBuffer(result);
for(
int
i
=
j;i=n;i++){
if(i==ni!=oldData)
{
result.append(i);
System.out.println(result.toString());
result
=
new
StringBuffer(r);
}
else
if(i!=oldData){
result.append(i);
result.append("+");
huafenD(oldData,i,n-i,result);
result
=
new
StringBuffer(r);
}
}
}
public
static
void
main(String
args[])
{
Scanner
in
=
new
Scanner(System.in);
System.out.println("請輸入一個(gè)整數(shù)(1-10)");
int
data
=
in.nextInt();
while(data1||data10){
System.out.println("您的輸入
不符合要求,請重新輸入");
data
=
in.nextInt();
}
if(data==1)System.out.println("無需劃分");
else
{
StringBuffer
sb
=
new
StringBuffer();
huafenD(data,1,data,sb);
}
}
}
運(yùn)行結(jié)果示例:
請輸入一個(gè)整數(shù)(1-10)
6
1+1+1+1+1+1
1+1+1+1+2
1+1+1+3
1+1+2+2
1+1+4
1+2+3
1+5
2+2+2
2+4
3+3
如果沒有負(fù)整數(shù),一共有 8037 種拆法。
源碼:
import java.io.FileWriter;
import java.io.IOException;
import java.util.Arrays;
import java.util.Set;
import java.util.TreeSet;
public class Main {
public final static int Sum = 100;
static SetString Combinations = new TreeSet();
public static void main(String[] args) throws IOException {
for (int i1 = 0; i1 = Sum; i1++) {
for (int i2 = 0; i2 = Sum; i2++) {
for (int i3 = 0; i3 = Sum; i3++) {
for (int i4 = 0; i4 = Sum; i4++) {
String s = GetString(new int[] {i1, i2, i3, i4});
if (CheckNumbers(i1, i2, i3, i4)) {
Combinations.add(s);
}
}
}
}
}
System.out.println(Combinations);
System.out.println(Combinations.size());
FileWriter writer = new FileWriter("results.json");
writer.write(Combinations.toString());
writer.flush();
writer.close();
}
public static String GetString(int[] numbers) {
sort(numbers, 0, 3);
return Arrays.toString(numbers);
}
public static void sort(int[] arr,int begin,int end) {
int a = begin;
int b = end;
if (a = b) return;
int x = arr[a];
while (a b) {
while (a b arr[b] = x) b--;
if (a b) {
arr[a] = arr[b];
a++;
}
while (a b arr[a] = x) a++;
if (a b) {
arr[b] = arr[a];
b--;
}
}
arr[a] = x;
sort(arr,begin,a-1);
sort(arr,a+1,end);
}
public static boolean CheckNumbers(int i1, int i2, int i3, int i4) {
return (i1 + i2 + i3 + i4) == Sum;
}
}