一维数组
package yiweishuzu;
import java.util.Scanner;
/**
* 貪心算法
* @author Lenovo
*
*/
public class shuzu_1 {
private static Scanner scan;
public static void main(String[] args) {
// 確定元素的個(gè)數(shù)
System.out.println("輸入數(shù)組元素個(gè)數(shù):");
scan = new Scanner(System.in);
int n = scan.nextInt();
// 循環(huán)輸入數(shù)組元素
System.out.println("輸入數(shù)組");
int[] x = new int[n];
for (int i = 0; i < n; i++) {
x[i] = scan.nextInt();
}
// 最大子數(shù)組的起始位置(即當(dāng)前最大子數(shù)組)
int max = Integer.MIN_VALUE;// 設(shè)置成最小整數(shù)
int sum = 0;// 記錄數(shù)組個(gè)元素相加的和
for (int i = 0,j = 1; i < n; i++) {// 將個(gè)元素依次相加并進(jìn)行判斷
System.out.println("當(dāng)前執(zhí)行第" + j + "步");
if (sum <= 0) {// 當(dāng)遇到小于0的數(shù)時(shí)就停止相加
sum = x[i];
System.out.println("此時(shí)執(zhí)行到的元素是" + x[i]);
System.out.println("當(dāng)前sum值為" + sum);
} else {
sum = sum + x[i];
System.out.println("此時(shí)執(zhí)行到的元素是" + x[i]);
System.out.println("當(dāng)前sum值為" + sum);
}
if (sum >= max) {// 如果求得總和大于之前的最大值的話,就將sum賦值給max
max = sum;
System.out.println("此時(shí)最大值符合條件,當(dāng)前最大值" + max + "
");
j++;
continue;
}
else{
System.out.println("此時(shí)不符合要求,sum清0" + "
");
j++;
continue;
}
// if (sum < 0) {// 如果當(dāng)前求得的數(shù)組的和為負(fù)數(shù),就把他清除為0(輸出的結(jié)果就是非負(fù)整數(shù))
// max = 0;
// }
}
// System.out.println("最大子數(shù)組的和為:" + max);
}
}
總結(jié)
- 上一篇: TestNG系列(四)TestNG监听器
- 下一篇: 软件架构入门(阮一峰)