package test;
import java.util.Arrays;
import java.util.Scanner;
public class first {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan = new Scanner(System.in);
System.out.println("请输入一串以英文逗号隔开的任意整数");
String inputstring=scan.next().toString(); //读取一次数据且只能一次
scan.close();
String[] stringarray=inputstring.split(","); //把整数以逗号分开,存成数组
int num[]=new int[stringarray.length]; //定义并初始化数组,长度为数字个数
System.out.println("原数组为如下顺序");
for(int i=0;i<stringarray.length;i++)
{
num[i]=Integer.parseInt(stringarray[i]); //转化成int型存入num数组
System.out.print(num[i]+" ");
}
System.out.println(""); //空一行
int max=num[0]; //最大和
int start=0;int end=0; //子数列开始结束位置
for(int i=0;i<num.length;i++)
{
int sum=0; //第一层循环里sum存从第i个开始可能的和
for(int j=i;j<num.length;j++) //第二层循环里依次往后加
{
sum=sum+num[j]; //累加
if(sum>max)
{
max=sum;
start=i;
end=j;
}
}
}
int chang=end-start+1; //子数列长度
int[] newnum=new int [chang]; //定义并初始化子数列
for(int i=0;i<chang;i++)
newnum[i]=num[i+start]; //子数列赋值
System.out.println("最大子数列为"+Arrays.toString(newnum));
System.out.println("其和为"+max);
}
}
输入一组整数,输出最大子数列及其和
最新推荐文章于 2020-08-14 11:13:03 发布