永发信息网

c语言求最大子串和的问题。求代码。

答案:2  悬赏:80  手机版
解决时间 2021-11-20 20:50
c语言求最大子串和的问题。求代码。
最佳答案
#include

int main()
{
int i,temp,max;
//int num[10]={-33,16,48,-5,16,-20,19,-21,32,-1};//存放数组中

int num[10];
printf("输入10个数为:\n");
for(i=0;i<10;i++) scanf("%d",&num[i]);
for(i=0,temp=0,max=0;i<10;i++)
{

temp+=num[i];
if(temp>=0)
{
if(temp>max)
{
max=temp;
}
}
else
temp=0;

}

printf("%d\n",max);

return 0;

}追问那请问一下,数组是不是累加的呢?我的意思是说,比如这个数列100 -2 -3 -40 46,结果应为101,temp值是不是从第二项开始就是0,一直持续到最后的46 ,而这时候的num[5]应该是1?就是累加的?追答不是,你看temp+=num[i];相当于temp=temp+num[i]是累加的和,不是单个的数据追问小生愚昧,从我那个数列看的话,i=1时,temp=-2,然后temp<0,所以temp被赋值为0,然后继续执行,i=2,temp=-3,同理temp被赋值为0……那怎么出来的101啊??追答呵呵,你先看看temp+=num[i];它不是temp=num[i];注意等号左侧有个加号。是将右侧表达式累加到左侧在复制给左侧
所以
i=0时,temp=0+100=100
i=1时,temp=100+(-2)=98,然后temp>0,
i=2,temp=98+(-3)=95,同理temp>0……
i=3,temp=95+(-40)=55,.....
i=4,temp=55+46=101.....

还有顺便说下,数组下标是从0开始算起的,不是从1开始的,所以要i=0,不是i=1开始的追问欧了!!谢谢!!!求您的qq或者其他联系方式,好不好,我今年大一,有很多问题想问问您~~~追答有问题直接可以给我留言就行。
全部回答
试试这个?
#include

int main()
{
int i,j,temp,max;
int num[10];

for (i=0; i<10; i++)
scanf("%d", &num[i]);

for (i=0,temp=0,max=0; i<10; i++)
{
for (j=i; j<10; j++)
{
temp += num[j];

if ( temp > max )
{
max = temp;
}
}
temp = 0;
}
printf("%d\n",max);

return 0;
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
什么叫保护接零??? 保护接地的应用范围 简
pvc面料包包防水吗?
西周,西周国,东周,东周国,到底怎么区分
小米8待机耗电特别快是怎么回事
中国移动通信华辉宇服务站地址好找么,我有些
《欢乐颂》对现在的年轻人的价值观有何影响
dnf传承神圣的天马守护神套是怎么来的?
SWATCH上海又一城直营店地址好找么,我有些事
蓝屏代码0x00000A5什么什么意思
鑫辰兴电信代理点地址在什么地方,我要处理点
航海这个职业好吗?挣钱多吗?主要学什么?容
罗山县信阳耐克(淮南路店)在什么地方啊,我要
别人问你干嘛去了怎么幽默回答
历史上方正的儿童
各种微表情代表着怎样的内心活动?例如:撇嘴
推荐资讯
丹麦草中的杂草如何去除
曹操为什么曹孟德
通宵多了.对身体有什么伤害?
动漫男主叫八幡,有一个伪娘叫彩加
各位大虾:请问我这样算是不是算错了,0.38×
去外地打工小孩能跟去外地读书吗?
西安“商转公”不明白的事项
木头怎样处理不裂
好型象地址好找么,我有些事要过去,
一个人生活了好多年,貌似习惯了这样的生活,
信用贷款3万
芸字在姓名学中算几画?我在网上测名字时,发
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?