实验二 动态规划算法 最大字段和问题

 基本题二:最大字段和问题

 

一、实验目的与要求

1、熟悉最长最大字段和问题的算法;

2、进一步掌握动态规划算法;

二、实验题

    若给定n个整数组成的序列a1a2a3,…,an,求该序列形如aiai1+…+an的最大值。

三、实验提示

int MaxSum(int n,int *a,int &besti,int &bestj)
{
  int sum=0;
  for(int i=1;i<=n;i++)
  for(int j=i;j<=n;j++)
   {
     int thissum=0;
     for(int K=i;k<=j;k++)thissum+=a[k];
     if(thissum>sum)
       {
         sum=thissum;
         besti=i;
         bestj=j;
        }
     }
    return sum;
 }
intMaxSum(int n,int *a,int &besti,int &bestj)
 {
   int sum=0;
   for(inti=1;i<=n;i++)
   {
     int thissum=0;
     for(intj=i;j<=n;j++)
      {
        thissum+=a[j];
        if(thissum>sum)
        {
          sum=thissum;
           besti=i;
           bestj=j;
          }
         }
    }
    return sum;
}

 

 

四、源代码

public static void main(String[] args) {
		int[] a = { 12, 8, 2, 8, 2, 9, 10 };
		System.out.println(maxSum(3, a));
	}

	public static int maxSum(int n, int[] a) {
		int sum = 0;
		for (int i = 0; i < a.length - n + 1; i++) {
			int thissum = 0;
			for (int v = 0; v < n; v++) {
				System.out.println(v + "--" + i);
				thissum += a[v + i];
			}
			System.out.println("---------------------------" + thissum);
			if (thissum > sum)
				sum = thissum;

		}

		return sum;
	}

0–0

1–0

2–0

—————————22

0–1

1–1

2–1

—————————18

0–2

1–2

2–2

—————————12

0–3

1–3

2–3

—————————19

0–4

1–4

2–4

—————————21

22

点赞