| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 943 人关注过本帖
标题:一道一维数组的题目,我编的渣代码求修改!
只看楼主 加入收藏
bjut_Allen
Rank: 9Rank: 9Rank: 9
来 自:平乐园工业技术学校
等 级:蜘蛛侠
威 望:8
帖 子:323
专家分:1223
注 册:2016-10-16
结帖率:95.45%
收藏
已结贴  问题点数:20 回复次数:9 
一道一维数组的题目,我编的渣代码求修改!
/*数组中按顺序存放着下列数据11,19,9,12,5,30,1,18,4,16,6,10,15,2,17,3,14,7,13,15,8,你可以
逻辑上认为尾部的8和头部的1首尾相连,编程找出相邻的4个数,其相加之和最大,找出这四个数,和他们的起始位置(用数组下标表示)*/



#include <stdio.h>
int main()
{
    int number[21]={11,19,9,12,5,20,1,18,4,16,6,10,15,2,17,3,14,7,13,15,8};
    int i,x,y,m,n,t,k,c;
    int max1,max2,max3,max4,max5;
    max1=0;max2=0;max3=0;max4=0;max5=0;
    i=0;
    m=0;

    while(i<18)
    {
        m=number[i]+number[i+1]+number[i+2]+number[i+3];
        max1=(max1>m)?max1:m;
        i++;
    }
    t=18;
    n=0;
    x=0;
    y=0;
        n=number[t]+number[t+1]+number[t+2]+number[i-18];
    k=19;
        x=number[k]+number[k+1]+number[k-19]+number[k-18];
    c=20;
        y=number[c]+number[c-20]+number[c-19]+number[c-18];
        max2=(n>x)?n:x;
        max3=(y>max2)?y:max2;
        max4=(c>max3)?c:max3;

    max5=(max1>max4)?max1:max4;
    if(max5==m)
    {
        printf("%d %d %d %d %d %d %d %d",number[i],number[i+1],number[i+2],number[i+3],i,i+1,i+2,i+3);
    }
    else if(max5==n)
    {
        printf("%d %d %d %d %d %d %d %d",number[t],number[t+1],number[t+2],number[t-18],t,t+1,t+2,t-18);
    }
    else if(max5==x)
    {
        printf("%d %d %d %d %d %d %d %d",number[k],number[k+1],number[k-19],number[k-18],k,k+1,k-19,k-18);
    }
    else if(max5==y)
    {
        printf("%d %d %d %d %d %d %d %d",number[c],number[c-20],number[c-19],number[c-18],c,c+1,c+2,c-18);
    }
    return 0;
 }
搜索更多相关主题的帖子: include number 
2016-10-16 10:43
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
收藏
得分:2 
if(max5==m)
     {
         printf("%d %d %d %d %d %d %d %d",number[i],number[i+1],number[i+2],number[i+3],i,i+1,i+2,i+3);
     }  //要想max5==m成立, 就得默认最后四个数的和是最大的 ,m的值不断会变 直到m等于最后四个数字的和 ,所以这段代码可以删掉

早知做人那么辛苦!  当初不应该下凡
2016-10-16 11:09
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
收藏
得分:0 
   while(i<18)
    {
        m=number[i]+number[i+1]+number[i+2]+number[i+3];
        if(max1<m)
        {
            max1=m,
            mh=i;       //记录最大和4个数开始的位置
        }
        i++;
    }

然后将if(max5==m)改成if(max5==max1)   

[此贴子已经被作者于2016-10-16 11:34编辑过]

2016-10-16 11:33
bjut_Allen
Rank: 9Rank: 9Rank: 9
来 自:平乐园工业技术学校
等 级:蜘蛛侠
威 望:8
帖 子:323
专家分:1223
注 册:2016-10-16
收藏
得分:0 
回复 3楼 linlulu001
我想把后面三个单独的n,x,y整合到前面,有什么办法吗?

Code is my life.
2016-10-16 11:40
bjut_Allen
Rank: 9Rank: 9Rank: 9
来 自:平乐园工业技术学校
等 级:蜘蛛侠
威 望:8
帖 子:323
专家分:1223
注 册:2016-10-16
收藏
得分:0 
回复 2楼 炎天
就得默认最后四个和最大是什么意思?如果前四项和最大这段感觉有意义,不懂大神的意思orz

Code is my life.
2016-10-16 11:44
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
收藏
得分:18 
#include <stdio.h>
int main()
{
    int number[21]={11,19,9,12,5,20,1,18,4,16,6,10,15,2,17,3,14,7,13,15,8};
   int i=0,t=1,k=2,c=3;
int m,mh,n,x,y,max=0;
while(i<21)
{
        if(t==21) t=0;
        if(k==21) k=0;
        if(c==21) c=0;
        m=number[i++]+number[t++]+number[k++]+number[c++];
        if(max<m)
        {
            max=m,
            mh=--i;n=--t;x=--k;y=--c;      
        }
}

printf("%d %d %d %d %d %d %d %d",number[mh],number[n],number[x],number[y],mh,n,x,y);
 }
收到的鲜花
  • bjut_Allen2016-10-16 12:20 送鲜花  1朵   附言:我很赞同
2016-10-16 11:57
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
收藏
得分:0 
看到6楼发了简便的代码,我的太繁琐  删了

[此贴子已经被作者于2016-10-16 12:11编辑过]


早知做人那么辛苦!  当初不应该下凡
2016-10-16 12:07
bjut_Allen
Rank: 9Rank: 9Rank: 9
来 自:平乐园工业技术学校
等 级:蜘蛛侠
威 望:8
帖 子:323
专家分:1223
注 册:2016-10-16
收藏
得分:0 
回复 6楼 linlulu001
对我这个新手帮助太大了!!我没想到【】里面用四个变量!!!!谢谢谢orz

Code is my life.
2016-10-16 12:07
bjut_Allen
Rank: 9Rank: 9Rank: 9
来 自:平乐园工业技术学校
等 级:蜘蛛侠
威 望:8
帖 子:323
专家分:1223
注 册:2016-10-16
收藏
得分:0 
回复 7楼 炎天
谢谢大神帮助萌新!

Code is my life.
2016-10-16 12:14
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
收藏
得分:0 
回复 9楼 bjut_Allen
我也不是什么大神,也是刚刚开始学,能力很有限,论坛帮助了我很多

早知做人那么辛苦!  当初不应该下凡
2016-10-16 13:12
快速回复:一道一维数组的题目,我编的渣代码求修改!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021179 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved