个人数组
Posted evak
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了个人数组相关的知识,希望对你有一定的参考价值。
第一:将数组首尾相连,形成循环数组,依然输出最大子数组的和
package max1; import java.util.Scanner; import java.io.*; import java.math.BigDecimal; public class zdh { public static void main(String[] args) throws Exception{ FileWriter out = new FileWriter("D:\\array.txt"); int []b=new int[4]; for(int i=0;i<4;i++) {b[i]=(int)(-9+Math.random()*20);} for(int i=0;i<4;i++) { out.write(b[i]+" "); } out.close(); BufferedReader br = null; try { br = new BufferedReader(new FileReader("D:\\array.txt")); } catch (FileNotFoundException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } String s=""; String s1; try { while((s1=br.readLine())!=null) { s=s+s1; } } catch (IOException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } String [] data=s.split(" "); int []a=new int [data.length]; //将String类型数组转成int类型 for(int j=0;j<data.length;j++) { a[j]=Integer.parseInt(data[j]); } /*for(int i=0;i<a.length;i++) { System.out.print(a[i]+" "); }*/ if(a.length>60000) throw new Exception("数量过多"); // TODO 自动生成的方法存根 findmax(a); } public static void findmax(int a[]) { Scanner sc= new Scanner(System.in); int sum=0; int max=0; int s=0; int e=0; int []c=new int[3]; int []d=new int[7]; for(int i=0;i<3;i++) { c[i]=a[i]; } for(int i=0;i<4;i++) { d[i]=a[i]; } for(int i=4;i<7;i++) { d[i]=c[i-4]; } for(int i=0;i<7;i++) { System.out.println(d[i]); } for(int i=0;i<7;i++) { sum=sum+d[i]; if(sum<0) { sum=0; s=i+1; } if(sum>max) { max=sum; e=i+1; } } System.out.println(s); System.out.println(e); if((e-s)>4) System.out.println(max); } }
以上是关于个人数组的主要内容,如果未能解决你的问题,请参考以下文章