数组问题
如何求一个由n个元素组成整型数组中连续m(m<=n)个元素的和的最大值???
程序代码:
#include<stdio.h> #define N 10 int main() { int a[N]={0}; int s[N]={0}; int m=0; int i,j,max=0,flag=0; for(i=0;i<N;i++) { printf("Input a[%d]:",i); scanf("%d",&a[i]); } printf("Input m:"); scanf("%d",&m); for(i=0;i<=N-m;i++) { for(j=0;j<m;j++) { s[i]+=a[j+i]; } } max=s[0]; for(i=0;i<N-m;i++) { if(s[i]<s[i+1]) { max=s[i+1]; flag=i+1; printf("%d\n",flag); } } printf("从第%d个数连续加%d个数最大值为:%d\n",flag+1,m,max); return 0; }以上代码有问题!!!
修改如下:
程序代码:
#include<stdio.h> #define N 10 int main() { int a[N]={0}; int s[N]={0}; int m=0; int i,j,max=0,flag=0; for(i=0;i<N;i++) { printf("Input a[%d]:",i); scanf("%d",&a[i]); } printf("Input m:"); scanf("%d",&m); for(i=0;i<=N-m;i++) { for(j=0;j<m;j++) { s[i]+=a[j+i]; } } max=s[0]; for(i=0;i<N-m;i++) { if(max<s[i+1])////////此处错误,已修改 { max=s[i+1]; flag=i+1; // printf("%d\n",flag); } } printf("从第%d个数连续加%d个数最大值为:%d\n",flag+1,m,max); return 0; }求谅解。
[ 本帖最后由 laznrbfe 于 2011-10-21 10:34 编辑 ]