208040226 发表于 2009-5-26 11:57:40

求2个零值之间的数的和

问题是:数组0132024210234101420...通过循环不断求出2个零值之间的数的和
例如01320,得出6,不知道大家有没很简单的算法!

HHHHLLLL 发表于 2009-5-26 12:25:53

有,把0当作分隔符,分成N/4个1D数组,然后对1D数组求和就可以了。

208040226 发表于 2009-5-26 14:01:59

不是太明白,用什么函数呢?

3no 发表于 2009-5-26 16:41:14

0与0之间数的位数确定么,确定就直接取直接算
没确定,就转化成字符串,判断0的位置,然后再计算

foolooo 发表于 2009-5-26 19:18:08

对每个数值进行判断,如果=0,将当前的和输入数组,如果<>0,继续算求和。个人感觉这样逻辑简单些。

labc 发表于 2009-5-26 19:35:07

本帖最后由 labc 于 2009-5-26 19:39 编辑

请看:
LV 8.x版, 需要安装OpenG的工具包, 用于删掉数组里的重复元素.
Labc

208040226 发表于 2009-5-27 09:22:25

thanks!

HHHHLLLL 发表于 2009-5-27 09:38:41

从算法的时空性能上分析,我个人认为,5#的算法是最好的。甚至比我想到的都要好。

208040226 发表于 2009-5-27 10:20:25

但是5楼的缺点是如果第一个数是0的话,输出数组上也会出现0,而实际是不需要的,我只想让相邻0之间的数的和输出,比如说013203450,输出应该是6 12!但5楼的算法的确让你眼前一亮!呵呵

HHHHLLLL 发表于 2009-5-27 12:06:22

那不很简单么?把数组第一个数剔除就可以了

labc 发表于 2009-5-27 18:29:09

5楼的方法修正一下就行了...
2种方法, 思路各不相同哈.

Labc
页: [1]
查看完整版本: 求2个零值之间的数的和