2016.5.17【i码邦】每日一练——算法问题!

编程实现:下图问题。  不限形式,不限格局,百花齐放才是编程的春天!!大家可以结合自己实际平时的分页内容实现,希望今天看到更灿烂的代码
tu0517.jpg

学习java贵在坚持,多动手编码,才能领会其中的编程奥秘。

宣传图片22.jpg

 

--来自网页客户端
已邀请:

寻寻觅觅潇潇

赞同来自: yorkyy

image.png


--来自移动客户端

admin

赞同来自: qoqo908

这个问题可能有点绕,大家都可以参与问题本身的讨论。
比如一个int[]数组,{1,2,-5,56,3,7,9,10,-42,45}
字数组可以是整个全部,也可以是下标0到5,也可以是下标3到8,这个最后最大的应该是下标3到7这个子数组的值。
 
 

--来自网页客户端

ttttt

赞同来自:

public class Demo0518 {
public static void main(String[] args) {
int[] arr = new int[] { 1, 2, -5, 56, 3, 7, 9, 10, -42, 45 };
Demo(arr, 0, arr.length-1);
}

public static void Demo(int[] arr, int start, int end) {
/**
* 0<=start<=end<=arr.length-1
*/
for (int i = start; i <= end; i++) {
for (int x=i,y=end; x <=y; y--) {
ArrPrint(arr, x, y);
System.out.println("子串的和: "+Sum(arr, x, y));
System.out.println();
}
}
}

public static void ArrPrint(int[] arr,int start ,int end) {
System.out.print("子串:");
for (int i = start; i <= end; i++) {
System.out.print(arr[i]+" ");
}
System.out.println();
}
public static int Sum(int[] arr,int start ,int end){
int sum=0;
for (int i = start; i <= end; i++) {
sum+=arr[i];
}
return sum;
}
}

QQ截图20160518150151.png

 

--来自网页客户端

fengyun12

赞同来自:

/**
* 每日一练 20160517 输入一个整型数组,可以为正数也可以是负数,
* 求数组中连续几个数的和最大
*/
public void ex160517(){
Scanner sc=new Scanner(System.in);
System.out.println("请输入数组的长度:");
int num=sc.nextInt(); //数组的长度
int[] numbers=new int[num];
for(int i=0;i<num;i++){
System.out.println("请输入第"+(i+1)+"个数字:");
numbers[i]=sc.nextInt();
}

int sumMax=numbers[0]; //记录数组中连续数字和最大的和
int beginMax=0; //记录数组连续和最大的起始位置
int endMax=0; //记录数组连续和最大的结束位置
int sum=numbers[0];
int begin=0;
int end=0;
for(int i=1;i<numbers.length;i++){
if(numbers[i]<0){
if(sum>sumMax){
beginMax=begin;
endMax=end;
sumMax=sum;
}

sum=numbers[i];
begin=i;
end=i;

}
else {
if(sum<0){
sum=numbers[i];
begin=i;
end=i;
}
else{
sum+=numbers[i];
end=i;
}
}
}
System.out.println("最大的和 :"+sumMax+"起始位于:"+(beginMax+1)+"结束于:"+(endMax+1));
sc.close();
}

--来自移动客户端

要回复问题请先登录注册

Template error, template file not found