主题:我儿子的一道题不会做!请高手指点一下!
1980
[专家分:0] 发布于 2006-11-03 09:29:00
设有一个包含N个元素的一维数组A,存放的元素为0~N-1(1< N < =10)之间的整数,且
A[i]≠A[j](i≠j),例如当 N=6时,有A=(4,3,0,5,1,2),对A数组进行编码,编码规则如下:
A[0]的编码为0,
A[i]的编码为:在A[0],A[1],A[2],……,A[i-1]中比A[i]的值小的数的个数,(I=1,2,3,……,N-1)
所以上面数组A的编码为B=(0,0,0,3,1,2)。现在要解决的问题是,当给出元素个数N ( N〈=9 〉和数组A的编码B后,根据B的值求出数组A中的原数据。
例如: 输入6
0 0 0 3 1 2
输出
4 3 0 5 1 2
回复列表 (共15个回复)
沙发
1980 [专家分:0] 发布于 2006-11-03 09:31:00
请帮忙指导一下!写出有解题思路的程序!
板凳
staa [专家分:3690] 发布于 2006-11-03 13:10:00
楼上确认题目没有错吗?
3 楼
moz [专家分:37620] 发布于 2006-11-03 13:48:00
楼上的面孔很生啊
是跑来捣乱的吗?
input"n=",n
dim a(n),b(n)
for i=1 to n
print"b(";i;
input")=",b(i)
next
for i=1 to n
a(i)=-1
next
k=1
do until k<1
'print a(1);a(2);a(3);a(4);a(5);a(6),k;j,input$(1)
if a(k)<b(k)then a(k)=b(k)else a(k)=a(k)+1
if a(k)>=n then
a(k)=-1
k=k-1
else
j=0
for i=1 to k-1
if a(i)<a(k)then j=j+1
if a(i)[color=FF00FF]=[/color]a(k)then j=-N
next
if j=b(k)then
k=k+1
elseif j>b(k)then
a(k)=-1
k=k-1
end if
end if
if k>n then
for i=1 to n
print a(i);
next
print
k=k-1
end if
loop
4 楼
1980 [专家分:0] 发布于 2006-11-03 14:53:00
if a(i)<a(k)then j=j+1
if a(i)<a(k)then j=-N
这两句是什么作用!
整个程序IF语句用的太复杂,都有些糊,能解释一下吧!
5 楼
moz [专家分:37620] 发布于 2006-11-03 15:23:00
笔误,
是等号,
不允许两数相等.
6 楼
staa [专家分:3690] 发布于 2006-11-04 16:02:00
[quote]楼上的面孔很生啊
是跑来捣乱的吗?
[/quote]
很久没来,看来大家都认不到了,以后争取来勤点,至少也混个面熟。
7 楼
moz [专家分:37620] 发布于 2006-11-05 00:36:00
欠我钱就算化了灰都认得你
不过这里流水飞鸟比较多,
认得你的没几个。
8 楼
staa [专家分:3690] 发布于 2006-11-06 20:37:00
欠我钱的多了,我找谁要去?你还不错,都挣了一万多了.
9 楼
moz [专家分:37620] 发布于 2006-11-06 22:50:00
那是因为我已经无路可逃了,
只好死赖这里混口饭吃。
10 楼
w1212q [专家分:660] 发布于 2006-11-18 16:22:00
我P啊 大名鼎鼎的MOZ,,,, 还要混
我来回复