帮忙找一下我的pascal数链错误

来源:百度知道 编辑:UC知道 时间:2024/09/24 05:27:20
【问题描述】
对于顺序数组集合{1},如果x属于这个集合,那么2x+1和3x+1也属于这个集合。输出这些数据中由小到大排的第n项数据(1≤n≤2500)
【输入格式】
一行一个数据n。
【输出格式】
一行一个数据,即第n项数据。
【样例】
输入:3 输出:4(前三项为1,3,4)
输入: 5 输出:9(前五项为1,3,4,7,9)
【说明】结果小于32767。

program exe_3(input,output);
var a:array[1..32766] of integer;
n,x,b,i,j,s:integer;
begin
for j:=1 to 32766 do a[j]:=0;
i:=1;
a[1]:=1;
s:=0;
read(n);
while s<>n do
begin
if a[i]<>0 then begin
s:=s+1;
x:=2*a[i]+1;
a[x]:=x;
b:=3*a[i]+1;
a[b]:=b;i:=i+1;
end
else
i:=i+1;
end;
writeln(a[i]);
end.
我是设两个计数器,一个是第几大,另一个是所在下标。

我才六年级~~~~~~~~~~~路过~~~~~~我也在学~~~~~~~你教我吧~~~~~~~~~不是我教你

我的建议是,先全部递归生成(如果大于32767的就不要了),放在一个数组里面,然后再去排序,这样比较不容易写错