如何算出二维数组不同元素的个数,并放在一维数组里。谢谢!如下,是我的思路。但是元素个数很容易被后面元素的个数覆盖掉。
for i =0 to X
for j =0 to Y
for ni =i to X
for nj =j to Y
if A(i,j)=A(ni,nj) then 加入一维数组
next ni
next nj
next i
next j
for i =0 to X
for j =0 to Y
for ni =i to X
for nj =j to Y
if A(i,j)=A(ni,nj) then 加入一维数组
next ni
next nj
next i
next j
解决方案 »
- 求Unicode转ANSI代码
- 一个关于MSComm的问题,大侠们指点呀!!!!在线等!!!
- 跪求!!!怎么用vb向Access数据库中添加一个图片以长二进制类型?谢谢
- 高人过来看看!
- 在VB中怎么引用word中的透明图标?
- 在picture上画了一个直线和一个三角形,如何让它顺时针旋转30度重画?
- 制作帮助文档怎么不能生成*.hlp文件?
- 请教:DIR$函数是否可以检测局域网内某一台机器上的目录是否存在
- 在VB中调用过程或函数的问题.
- 我是强压着怒火在学VB...初学者的问题....为什么我在一个属性页里某一页添加个控件后,每个属性页都看的见
- 请问各路大神,有关矩阵问题请教。谢谢!
- 求能连接任意数据库并扫描数据库表的代码
ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As String) As LongPrivate Const LB_FINDSTRINGEXACT = &H1A2 '在 ListBox 中精确查找List1.Clear
For i = 0 To X
For j = 0 To Y
n = SendMessagebyString(List1.hWnd, LB_FINDSTRINGEXACT, -1, A(i,j))
If n = -1 then
List1.AddItem A(i, j)
List1.ItemData(List1.NewIndex) = 1
Else
List1.ItemData(n) = List1.ItemData(n) + 1
End If
Next j
Next iRedim number(List1.ListCount - 1)
For i = 0 To List1.ListCount - 1
number(i) = List1.ItemData(i)
Debug.Print List1.List(i), List1.ItemData(i)
Next i
不知你弄到一维数组中的意图。那如何知道哪一个元素有多少呢?
“for ni =i to X
for nj =j to Y”
这里的X,和,Y;不应该跟第一段
for ni =i to X
for nj =j to Y
里面的X和Y等值,并使用同一坐标范围。如果是你写的这段,
那么,实际上,ni=i to ??, 里面的i值已经到max值了;“ nj =j to ??”里面的j值也已经到max值了。那你后面两段的:
next ni
next nj
next i
next j实际上就是会被覆盖,而且没有办法循环。
假设 i = 0 to 100;j =0 to 100; 那么你的ni 和 nj 实际上都是等于 0 to 100的。
所以你的第二轮循环实际上就是等于第一轮循环。你不管怎么设置A(i,j)=A(ni,nj) ,最后结果都是 只有 next i 和 next j。不会编程,瞎猜的。自己看你的代码,感觉有问题。
“for ni =i to X
for nj =j to Y”
这里的X,和,Y;不应该跟第一段
for ni =i to X
for nj =j to Y
里面的X和Y等值,并使用同一坐标范围。如果是你写的这段,
那么,实际上,ni=i to ??, 里面的i值已经到max值了;“ nj =j to ??”里面的j值也已经到max值了。那你后面两段的:
next ni
next nj
next i
next j实际上就是会被覆盖,而且没有办法循环。
假设 i = 0 to 100;j =0 to 100; 那么你的ni 和 nj 实际上都是等于 0 to 100的。
所以你的第二轮循环实际上就是等于第一轮循环。你不管怎么设置A(i,j)=A(ni,nj) ,最后结果都是 只有 next i 和 next j。不会编程,瞎猜的。自己看你的代码,感觉有问题。
不对。我的这段也有问题。连着几天换系统,找升级,有点累了。重新想了一下,你的这个外循环和内循环,还有不对的地方。如果外循环,
for X =0 to X'
for Y =0 to Y'
next X
next Y
叠加一个范围,结束。
那么,你等于外围预先定义了这个范围,内循环结束后,自动返回外循环。但你没有划分出来,等于一直在不停的做这个循环。相当于英语叫做BOX
for nX =X to X'
for nY =Y to Y'
next nX
next nY
实际上没有起任何作用。等于不存在。如果要内循环成立的话,你得加另一层英语叫做box的东西,两个得分开。
相当于计算时,有不同的范围界限。第一个外BOX里X,Y的范围是定义坐标双向值,第二个内BOX里,nX和nY是实际的坐标计算的数字移动值。当移动值得范围超过被定义的坐标值划分范围时,计算机没有办法计算了。要么消失,要么返回坐标原点,即 X=0,Y=0。那么,nX和nY, 这个时候也等于0. 因为计算机系统的计算是建立在维度假设上的,也就是物理假设上。如果超过假设的维度范围,那么计算全部失效。
1: 先申请一个(X+1)*(Y+1)大小的数组, 假装就是A1(Z), 其中 Z = (X+1)*(Y+1)-12: COPYMEMORY , 把二维数组A拷贝进一维数组A13:一维数组找重复也好不重复也好, 代码就简单多啦.