Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2498994
  • 博文数量: 540
  • 博客积分: 11289
  • 博客等级: 上将
  • 技术积分: 6160
  • 用 户 组: 普通用户
  • 注册时间: 2008-02-11 20:27
个人简介

潜龙勿用,见龙在田

文章分类

全部博文(540)

文章存档

2018年(2)

2013年(5)

2012年(24)

2011年(104)

2010年(60)

2009年(217)

2008年(128)

分类:

2010-09-17 12:50:45

在CU上看到的:
计算一个整形数组里的连续元素和的最大值
例:{9, -12, 120, 8, -20, 100, 30, -89, 20}
结果是{120, 8 , -20, 100, 30}的和最大,为 238

当然,本意是要用c实现,我们用shell来试试,


首先得知道最大值:
#!/bin/bash
num=(9 -12 120 8 -20 100 30 -89 20)
max_sum=0
for ((i=0;i<${#num[@]};i++))
do
    for ((l=2;l<${#num[@]};l++))
    do
        let s$l=0;
        for ((j=$i;j<$l;j++));
        do
            let s$l+=${num[j]};
        done
        if [ "$max_sum" -lt "$((s$l))" ];then
            max_sum=$((s$l))
        else
            continue;
        fi
    done
done
echo $max_sum

=============

然后根据结果查找序列:(就加了几行蓝色代码)
#!/bin/bash
num=(9 -12 120 8 -20 100 30 -89 20)
max_sum=0
for ((i=0;i<${#num[@]};i++))
do
    for ((l=2;l<${#num[@]};l++))
    do
        let s$l=0;
        for ((j=$i;j<$l;j++));
        do
            let s$l+=${num[j]};
        done
        if [ "$max_sum" -lt "$((s$l))" ];then
            max_sum=$((s$l))
        else
            continue;
        fi
        if [ "$((s$l))" -eq "238" ];then
            echo ${num[i]} $l
        fi
    done
done
echo $max_sum
#
# sh maxsum.sh
120 7       #原始序列中120开始,长度为7的序列,也即: 120 8 -20 100 30 -89 20
238
阅读(1539) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~