![]() |
#2
edward90922009-09-18 23:17
|
从文件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;
}
#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;
}
先谢谢了