【算法】最大子数组和的动态规划算法,Java实现

x33g5p2x  于2021-11-11 转载在 Java  
字(0.7k)|赞(0)|评价(0)|浏览(387)
  1. import java.util.Random;
  2. public class MainClass {
  3. public static void main(String[] args) {
  4. int[] array = new int[10];
  5. //生成随机测试数据,数据集里面必须有正有负。
  6. for (int i = 0; i < array.length; i++) {
  7. Random random = new Random();
  8. array[i] = (int) (Math.random() * 10) * (random.nextBoolean() ? 1 : -1);
  9. }
  10. //打印数据集
  11. System.out.println("测试的随机数组:");
  12. for (int n : array) {
  13. System.out.print(n + " ");
  14. }
  15. System.out.println("\n最大子数组和:");
  16. System.out.println(maxSub(array));
  17. }
  18. //最大子数组和的动态规划算法
  19. public static int maxSub(int[] array) {
  20. int retSum = 0;
  21. int sum = 0;
  22. int tempSum = 0;
  23. for (int i = 0; i < array.length; i++) {
  24. if (sum > 0) {
  25. sum = sum + array[i];
  26. if (sum > tempSum) {
  27. tempSum = sum;
  28. }
  29. } else {
  30. sum = array[i];
  31. }
  32. retSum = Math.max(retSum, sum);
  33. }
  34. return retSum;
  35. }
  36. }

测试几轮数据集输出如下:

相关文章

最新文章

更多