扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
import java.util.Scanner;
站在用户的角度思考问题,与客户深入沟通,找到新抚网站设计与新抚网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都做网站、成都网站制作、企业官网、英文网站、手机端网站、网站推广、申请域名、网络空间、企业邮箱。业务覆盖新抚地区。
public class numberDiv {
// private static final huafen numberrDiv = null;
// static int d[]=new int[32];
public static void main(String[] args) {
System.out.println("请输入的整数:");
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方法返回分解的个数,所以numberDiv类不需要再定义成员变量static int num=0;。
Division方法中if ((m == 1) || (n == 1))成立时,本次是一个分解,并且不需要再递归分解,所以返回1。
Division方法中if (n == m)成立时,本次是一个分解,且需要递归分解,所以返回1+递归分解个数。
Division方法中if (m n)成立时,返回两个递归分解的个数之和。
Division方法中最后代码即为m n,直接返回递归分解的个数。
//把123456789分割成123,456,789,
public class A
{
public static void main(String[] args)
{
String str = "123456789";//如果123456789是数字类型,则可以将其转换为String类型
String str1 = "";
for(int i=0;i9;i++){
str1 += str.charAt(i);
if((i+1)%3 == 0){
str1 += ";";
}
}
System.out.println(str1);
}
}
这个可以用递归来实现。。。。。代码如下。。。还是想了很久弄出来的。。。。已经测试了的。。。希望能帮到你。。。
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("请输入一个整数(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);
}
}
}
运行结果示例:
请输入一个整数(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
如果没有负整数,一共有 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;
}
}
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流