各位高手.有个排序组合类的题目,现在碰到些问题,需要大家的帮助,非常恳切....请帮助,请先看下面的排序.
0-9的原始排序:0 1 2 3 4 5 6 7 8 9
现在取得某选三的组合三个位置的排序:
百位排序: 2 5 1 0 7 9 8 4 3 6
十位排序: 9 3 4 1 6 7 2 5 8 0
个位排序: 5 1 2 6 7 3 4 9 0 8
这里引入一个概念,就是计算位置排序与原始排序的偏离量.
意思如下.比如百位
原始排序 0 1 2 3 4 5 6 7 8 9
百位排序 2 5 1 0 7 9 8 4 3 6
偏离量 2 4 1 3 3 4 2 3 5 3
即百位排序的号码对应-原始排序对位号的绝对值.
现在我们计算得到三个位置的对应偏量.
2 5 1 0 7 9 8 4 3 6
百: 2 4 1 3 3 4 2 3 5 3 9 3 4 1 6 7 2 5 8 0
十: 9 2 2 2 2 2 4 2 0 9 5 1 2 6 7 3 4 9 0 8
个: 5 0 0 3 3 2 2 2 8 1
现在有个8 6 2的组合.
我们先找到8 6 2这个组合的对应偏量
8对应2,
6对应2,
2对应0,
偏量和值:2 + 2 + 0= 4
那么就要对应找到百、十、个三个位置对应的偏量的和值为4的。
举例。百位找到了2,对应的偏量为2。十位找到了8,对应的偏量为0,个位找到了9对应的偏量为2。那么和值为2 + 0 + 2=4,那么对应输出2 8 9。同理:
可以找到2 4 2,8 4 2.....等等。也就是穷举所有对应偏量总和为4的对应组合。
现在我写了段代码,大家能帮忙看看,我的问题出在什么地方?
For n=1 to 10
For s=1 to 10
For t=11 to 20
For r=21 to 30
dim a(n) as double
a(n)=n-1
dim b(n),c(n),d(n) as double
dim j(n),k(n),l(n)as double
b(n)=val(text(s).text):c(n)=val(text(t).text):d(n)=val(text(r).text)
j(n)=abs(b(n)-a(n)):k(n)=abs(c(n)-a(n)):l(n)=abs(d(n)-a(n))
if j()+k()+l()=text31.text then print b(n) c(n) d(n)
next j()
next k()
next l()
end if
end sub
请大家看看,我这么写穷举部分以及输出部分存在什么样的错误。
如果问题得到解决后,我将及时结帖给大家以分数。请各位高手不吝指教。
0-9的原始排序:0 1 2 3 4 5 6 7 8 9
现在取得某选三的组合三个位置的排序:
百位排序: 2 5 1 0 7 9 8 4 3 6
十位排序: 9 3 4 1 6 7 2 5 8 0
个位排序: 5 1 2 6 7 3 4 9 0 8
这里引入一个概念,就是计算位置排序与原始排序的偏离量.
意思如下.比如百位
原始排序 0 1 2 3 4 5 6 7 8 9
百位排序 2 5 1 0 7 9 8 4 3 6
偏离量 2 4 1 3 3 4 2 3 5 3
即百位排序的号码对应-原始排序对位号的绝对值.
现在我们计算得到三个位置的对应偏量.
2 5 1 0 7 9 8 4 3 6
百: 2 4 1 3 3 4 2 3 5 3 9 3 4 1 6 7 2 5 8 0
十: 9 2 2 2 2 2 4 2 0 9 5 1 2 6 7 3 4 9 0 8
个: 5 0 0 3 3 2 2 2 8 1
现在有个8 6 2的组合.
我们先找到8 6 2这个组合的对应偏量
8对应2,
6对应2,
2对应0,
偏量和值:2 + 2 + 0= 4
那么就要对应找到百、十、个三个位置对应的偏量的和值为4的。
举例。百位找到了2,对应的偏量为2。十位找到了8,对应的偏量为0,个位找到了9对应的偏量为2。那么和值为2 + 0 + 2=4,那么对应输出2 8 9。同理:
可以找到2 4 2,8 4 2.....等等。也就是穷举所有对应偏量总和为4的对应组合。
现在我写了段代码,大家能帮忙看看,我的问题出在什么地方?
For n=1 to 10
For s=1 to 10
For t=11 to 20
For r=21 to 30
dim a(n) as double
a(n)=n-1
dim b(n),c(n),d(n) as double
dim j(n),k(n),l(n)as double
b(n)=val(text(s).text):c(n)=val(text(t).text):d(n)=val(text(r).text)
j(n)=abs(b(n)-a(n)):k(n)=abs(c(n)-a(n)):l(n)=abs(d(n)-a(n))
if j()+k()+l()=text31.text then print b(n) c(n) d(n)
next j()
next k()
next l()
end if
end sub
请大家看看,我这么写穷举部分以及输出部分存在什么样的错误。
如果问题得到解决后,我将及时结帖给大家以分数。请各位高手不吝指教。
next j()
next k()
next l()
=====================
???这是你的完整代码吗?