再请教一个算法,解决就给分,我很着急,谢谢了!

zrb007 2002-07-02 02:31:35
俩个数组 a() ={2,2,3,4,5,3} b()={'err1','err2','err3','err4','err5,'err6'}
其中a(i)的b(i)一一对应,现在要把a()中的重复元素合并,以便统计出同一元素对应的b()中的串,并拼接起来
即生成新数组 a1() ={2,3,4,5} 对应 b1()={'err1+err2','err3+err6','err4','err5'}

感觉不难的算法呀,时间紧迫,一时想不出来了,哪位大虾帮忙了! :)
...全文
77 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
zrb007 2002-07-03
  • 打赏
  • 举报
回复
to meizz(梅花雨) :
谢谢了,我IIS有问题或者我的机器染毒了, sigh, 重启后就好了,
真的不知道怎么感谢你, 好兄弟!
cc : 大家热心的帮助,也深表感谢!
zrb007 2002-07-03
  • 打赏
  • 举报
回复
to meizz(梅花雨) :
谢谢了,我IIS有问题或者我的机器染毒了, sigh, 重启后就好了,
真的不知道怎么感谢你, 好兄弟!
cc : 大家热心的帮助,也深表感谢!
meizz 2002-07-03
  • 打赏
  • 举报
回复
To; zrb007(彬彬)
我刚才又测试一遍,一切都符合条件,没有你那种情况呀(win2000 server+IE5.0)。
我将代码再贴一次,我就是拿这个代码测的,原封不动地拷给你:
<%
dim a,b,c(),d(),i,j,tt
a = Array(2,2,3,4,5,3)
b = Array("err1","err2","err3","err4","err5","err6")
redim preserve c(0)
redim preserve d(0)
for j = 0 to ubound(a)
if c(0) = "" then
c(0) = a(0)
d(0) = b(0)
else
tt = 0
for i = 0 to ubound(c)
if c(i) = a(j) then
tt = 1
d(i) = d(i)&b(j) '具体怎么合并,你自己看着办
end if
next
if tt = 0 then
redim preserve c(i)
redim preserve d(i)
c(i) = a(j)
d(i) = b(j)
end if
end if
next '最后返回两个数组c(),d()且一一对应

Response.write "<br>a()="
for j=0 to ubound(a)
Response.write a(j)&","
next
Response.write "<br>b()="
for j=0 to ubound(b)
Response.write b(j)&","
next
Response.write "<br>c()="
for j=0 to ubound(c)
Response.write c(j)&","
next
Response.write "<br>d()="
for j=0 to ubound(d)
Response.write d(j)&","
next
%>
zrb007 2002-07-03
  • 打赏
  • 举报
回复
to meizz(梅花雨):
cc: all others
很奇怪,怎么我用下面的语句都打不出b()来???
b = Array("err1","err2","err3","err4","err5","err6")
Response.write "<br>b()="
for j=0 to ubound(b)
Response.write CStr(b(j))&","
next
结果:
,,,
这是为什么呀??
zrb007 2002-07-03
  • 打赏
  • 举报
回复
to meizz(梅花雨):
非常感谢你的热心支持,我试了, 非重复元素取对了,但打出来的d()怎么还是空的呢,我也正在调试,再麻烦你看看了,很感谢!
当然还有其他兄弟姐妹们!
zrb007 2002-07-03
  • 打赏
  • 举报
回复
to meizz(梅花雨):
非常感谢你的热心支持,我试了, 非重复元素取对了,但打出来的d()怎么还是空的呢,我也正在调试,再麻烦你看看了,很感谢!
当然还有其他兄弟姐妹们!
silentlamb 2002-07-02
  • 打赏
  • 举报
回复
to qiaowd:
你的也是双重循环啊,a(1)要和a中所有元素比较一遍,是内层循环,从a(1)到a(n)的遍历是外层循环,和 wsand_2002(西门扫雪)说的是一样的阿
qiaowd 2002-07-02
  • 打赏
  • 举报
回复
我还是觉得一个循环可以搞定
a{},b{}
取a(1),和所有的a{}中元素比较,
相同的就置空,同时在对应的b(i)与b(1)连接放入随便一个新的数组c{}
直到比较所有a{}中的元素
然后a(2),以此类推,不过这个元素不能为空,否则略过,
直到检索了所有的a{}中元素
a{},c{}就是所要的数组

这个想法不可以吗?
好像只用了一个循环呀!
wsand_2002 2002-07-02
  • 打赏
  • 举报
回复
觉得这个问题很好解决呀,我不写代码了,讲讲方法。
目的不就是生成一个新数组,包含了所有a()中的不重复的值
定义一个与a()数组同样长度的数组c()
a()取第一个数值放到c()中
a()循环与c()比较(),与c()重复则跳过,不重复则对c()赋值,
a()循环结束生成的c()就是你要的结果
注意c()取数据时也需要一个循环,所以一共两个循环a()循环在外、c()循环在里
meizz 2002-07-02
  • 打赏
  • 举报
回复
现在好了
<%
dim a,b,c(),d(),i,j,tt
a = Array(2,2,3,4,5,3)
b = Array("err1","err2","err3","err4","err5","err6")
redim preserve c(0)
redim preserve d(0)
for j = 0 to ubound(a)
if c(0) = "" then
c(0) = a(0)
d(0) = b(0)
else
tt = 0
for i = 0 to ubound(c)
if c(i) = a(j) then
tt = 1
d(i) = d(i)&b(j) '具体怎么合并,你自己看着办
end if
next
if tt = 0 then
redim preserve c(i)
redim preserve d(i)
c(i) = a(j)
d(i) = b(j)
end if
end if
next '最后返回两个数组c(),d()且一一对应

Response.write "<br>c()="
for j=0 to ubound(c)
Response.write c(j)&","
next
Response.write "<br>d()="
for j=0 to ubound(d)
Response.write d(j)&","
next
%>
qiaowd 2002-07-02
  • 打赏
  • 举报
回复
用两次循环吗?
我怎么觉得一次循环就可以解决了?
fokker 2002-07-02
  • 打赏
  • 举报
回复
var a=new Array(2,2,3,4,5,3);
var b=new Array('err1','err2','err3','err4','err5','err6');
var tmpa,tmpb;
var flag=false;
var alen=0;
for(var i=a.length-1;i>-1;i--){
tmpa=a.pop();
tmpb=b.pop();
for(var j=0;j<a.length;j++){
if(tmpa==a[j]){
b[j]=b[j] + tmpb;
flag=true;
break;
}
}
if(!flag){
a.unshift(tmpa);
b.unshift(tmpb);
}else{
}
flag=false;
}
zrb007 2002-07-02
  • 打赏
  • 举报
回复
楼上兄弟,麻烦你自己测试一下,好像不对吧,返回的c()和d()有些空值,且没有对应好呀,
请再改改好吗,谢谢!!
meizz 2002-07-02
  • 打赏
  • 举报
回复
<%
dim a,b,c(),d(),i,j,tt
a = Array(2,2,3,4,5,3)
b = Array("err1","err2","err3","err4","err5","err6")
redim preserve c(0)
redim preserve d(0)
for j = 0 to ubound(a)
tt = 0
for i = 0 to ubound(c)
if c(i) = a(j) then
tt = 1
d(i) = d(i)&b(j) '具体怎么合并,你自己看着办
end if
next
if tt = 0 then
redim preserve c(i+1)
redim preserve d(i+1)
c(i+1) = a(j)
d(i+1) = b(j)
end if
next '最后返回两个数组c(),d()且一一对应
%>
qiaowd 2002-07-02
  • 打赏
  • 举报
回复
我的很麻烦,一定不可以

拿出a{}第一个元素,
与a{}中所有元素比较,
相同的元素就置为空,
同时在对应的b{}中连接相应的元素
然后第二个非空元素,
做同样操作,
直到a{}的长度


呵呵!
是不是很麻烦?
反正自己觉得不是很优化!
谁有好的?
学习一下!
zrb007 2002-07-02
  • 打赏
  • 举报
回复
对了 ,补充一下,已经知道a()和b()的长度。

28,408

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧