5_37.cpp
上传用户:zipjojo
上传日期:2009-07-20
资源大小:70k
文件大小:1k
源码类别:

文章/文档

开发平台:

C/C++

  1. # include<iostream.h>
  2. int sum=0;
  3. int& maxsum(int n,int a[],int &besti,int &bestj)
  4. {
  5. for(int i=0;i<n;i++)
  6. {   
  7. int tempsum=0;
  8. for(int j=i;j<n;j++)
  9. {
  10. tempsum+=a[j];
  11. if (tempsum>sum)
  12. {
  13. sum=tempsum;
  14. besti=i;
  15. bestj=j;
  16. }
  17. }
  18. }
  19. return sum;
  20. }
  21. void main()
  22. {
  23. int arrSize; //元素的个数
  24. int * arr,i,ss,bi,bj;
  25. cout<<"Please enter the number of array elements:";
  26. cin>>arrSize; //临时分配元素的个数
  27. arr=new int[arrSize]; //临时分配这些元素所需的内存空间(堆内存中)
  28. if(arr!=NULL) //判断,堆空间不够分配时,系统会返回一个空指针值NULL
  29. {
  30. cout<<"nPlease enter the array elements:n";
  31. for (i=0;i<arrSize;i++) //逐个输入数组元素
  32. cin>>arr[i];
  33. cout<<endl;
  34. for (i=0;i<arrSize;i++) //显示数组元素
  35. cout<<arr[i]<<"  "; // arr[i] 可替换为*(arr+i)
  36. cout<<endl;
  37. ss=maxsum(arrSize,arr,bi,bj);
  38.         cout<<"最大子段和为:"<<ss<<endl;
  39. cout<<"起始位置:"<<++bi<<"  "<<"终止位置:"<<++bj<<endl;
  40. delete[]arr; //释放堆内存
  41. }
  42. else
  43. cout<<"Can't allocate more memory.n";
  44. }