在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
阅读(1549) | 评论(0) | 转发(0) |