JAVA实现(递归实现)正整数拆分算法

  • 格式:pdf
  • 大小:89.75 KB
  • 文档页数:2

下载文档原格式

  / 2
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
} catch (IOException e) { e.printStackTrace();
} } public static void main(String[] args) {
int n ; File file = new File("D:"+File.separator+"out.txt"); FileWriter writer; //n = (int) Math.round(Math.random()*100); Scanner in = new Scanner(System.in) ; System.out.print("请输入一个整数") ; n = in.nextInt() ; System.out.println("你刚才输入的数为"+n) ; //System.out.println("随机产生的数为:"+n); long startime = System.currentTimeMillis(); int []pdata = new int[n] ; try {
FileWriter writer){ if(input<1||base<1) return 0; if(input==1||base==1) { if(input==1) { pData[index] = input; print(pData, index+1,writer); } else { for(int k=0; k<input; k++) { pData[index++] = base; } print(pData,index,writer); } return 1; } if(input==base) { pData[index] = base; print(pData,index+1,writer);
System.out.print(pData[i]+"+"); s += String.valueOf(pData[i]); s += "+";
Βιβλιοθήκη Baidu
} System.out.println(pData[index-1]); s += String.valueOf(pData[index-1]) +"\r\n"; writer.append(s);
writer = new FileWriter(file) ; a = Devide(n, n, pdata, 0,writer) ; writer.close(); } catch (IOException e) { e.printStackTrace(); } long endtime = System.currentTimeMillis(); long result = endtime - startime; System.out.println("所用时间为"+result); System.out.println("拆分的总个数为:"+a) ;
int temp = Devide(input,base-1,pData,index,writer); return 1 + temp; } if(input<base) { int temp = Devide(input,input,pData,index,writer); return temp; } else { pData[index] = base; int temp1 = Devide(input-base,base,pData,index+1,writer); int temp2 = Devide(input,base-1,pData,index,writer); return temp1 + temp2; } } public static void print(int []pData ,int index, FileWriter writer){ try { String s = new String(); for(int i = 0 ; i < index - 1 ; i++){
} } //写文件情况下 //请输入一个整数80 //你刚才输入的数为80 //所用时间为212062 //拆分的总个数为:15796476
//不写文件情况下 //请输入一个整数80 //你刚才输入的数为80 //所用时间为1359 //拆分的总个数为:15796476
//请输入一个整数100 //你刚才输入的数为100 //所用时间为17859 //拆分的总个数为:190569292
import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.util.*;
public class aa { public static int a=0 ; public static int Devide(int input, int base, int []pData, int index,