大家 看看这个问题 的解法对吗?
问题描述: 从文件in.txt中输入一组数据, 然后求 这组数据中的连着的最大的和.
程序代码:
#include<iostream> #include<fstream> using namespace std; int main() { ifstream in("in.txt"); int n; in>>n; int *a=new int[n]; int *sum=new int[n]; int end=0,begin=n-1; for(int i=0;i<n;i++) in>>a[i]; sum[0]=a[0]; int max_sum=sum[0]; for(i=1;i<n;i++)//找到后界限 { sum[i]=sum[i-1]+a[i]; if(sum[i]>max_sum) { max_sum=sum[i]; end=i; } } cout<<"向后遍历得到的sum:"<<endl; for(i=0;i<n;i++) cout<<sum[i]<<"\t"; cout<<endl<<endl;; sum[n-1]=a[n-1]; max_sum=a[n-1]; for(i=n-2;i>=0;i--)//向前找到前界限 { sum[i]=sum[i+1]+a[i]; if(sum[i]>max_sum) { max_sum=sum[i]; begin=i; } } cout<<"原数据:"<<endl; for(i=0;i<n;i++) cout<<a[i]<<"\t"; cout<<endl<<endl; cout<<"向前遍历得到的sum:"<<endl; for(i=0;i<n;i++) cout<<sum[i]<<"\t"; cout<<endl<<endl; cout<<"begin="<<begin<<"\t"<<"end="<<end<<endl; max_sum=0; for(i=begin;i<=end;i++) { cout<<a[i]<<"\t"; max_sum+=a[i]; } cout<<endl<<"max_sum="<<max_sum<<endl; return 0; }
先谢谢了