给定一个整数数组(包含正负数),找到一个具有最大和的子数组,返回其最大的子数组的和。
例如:[1, -2, 3, 10, -4, 7, 2, -5]的最大子数组为[3, 10, -4, 7, 2]
输入:
请建立以自己英文名字命名的txt文件,并输入数组元素数值,元素值之间用逗号分隔。
输出
在不删除原有文件内容的情况下,将最大子数组以及子数组的和写入文件。
=================================================================
#include<stdio.h>
#include<stdlib.h>
int main()
{
FILE*fp;
long num=0;
int i,x,y,m,a[10];
if((fp=fopen("E:\HX.txt","r"))=NULL)
{
printf("File open error!");
exit;
}
for(i=0;i<5;i++)
{
fscanf(fp,"%s",a);
printf("%s",a);
}
for(i=0;i<5;i++)
{
num=num+a[i];
}
for(i=0;i<4;i++)
{
x=a[i]+a[i+1];
if(num<x)
num=x;
}
for(i=0;i<3;i++)
{
y=a[i]+a[i+1]+a[i+2];
if(num<y)
num=y;
}
for(i=0;i<2;i++)
{
m=a[i]+a[i+1]+a[i+2]+a[i+3];
if(num<m)
num=m;
}
printf("%d",num);
if(fclose(fp))
{
printf("Can not close the file!\n");
exit(0);
}
return 0;
}
1。数组a赋值不完整,只有前5个数
2。循环使用不对,需要增加一个下标才可以,i,j。
还是不行