java的管理

来源:互联网 发布:姚明生涯平均数据 编辑:程序博客网 时间:2024/04/29 03:19

  题目描述:

  给定一个由N个整数元素组成的数组arr,数组中有正数也有负数,这个数组不是一般的数组,其首尾是相连的。数组中一个或多个连续元素可以组成一个子数组,其中存在这样的子数组arr[i],…arr[n-1],arr[0],…,arr[j],现在请你这个ACM_Lover用一个最高效的方法帮忙找出所有连续子数组和的最大值(如果数组中的元素全部为负数,则最大和为0,即一个也没有选)。

  输入:

  输入包含多个测试用例,每个测试用例共有两行,第一行是一个整数n(1=

  输出:

  对于每个测试用例,请输出子数组和的最大值。

  样例输入:

  6

  1 -2 3 5 -1 2

  5

  6 -1 5 4 -7

  样例输出:

  10

  14

  最容易想到的算法:

  #include

  #define MAX 100005

  using namespace std;

  int main(int argc,char *argv[])

  {

  int i,j,k;

  int array[MAX];

  int n;

  while(scanf("%d",&n)!=EOF)

  {

  int flag=0;

  for(i=0;i=0)

  flag=1;

  }

  long long sum;

  long long max=-1001;

  for(i=0;i<n;i++) {="" for(j="i+1;j<n;j++)" if(sum<0 sum="array[i];" sum="" array="" j="" if="" sum="">max)

  max=sum;

  }

  for(k=0;k<i;k++) {="" if(sum<0 sum="0;" sum="" array="" k="" if="" sum="">max)

  max=sum;

  }

  }

  if(flag)

  printf("%lld\n",max);

  else

  printf("0\n");

  }

  return 0;

  }

0 0
原创粉丝点击