编码和解码问题pascal

2025-02-28 20:19:49
推荐回答(2个)
回答1:

求编码这个你应该会的吧
就每个扫过来就行了 n^2的

然后就是解码
我现在只能想到一个比较简单的方法但是可以过
先建一个m个boolean值的数组
全true
然后从最后一个值开始往回推
这个值假如是k 则这个数就是在那个boolean值数组里还是true的值的第k+1个
然后把这个数对应的boolean赋为false
就这样就可以求出来了

附上一小段代码以作解释
var
f:array[1..1000] of boolean;

begin
init;

for i:=m downto 1 do
begin
s:=1;
while b[i]>=0 do
begin
if f[s] then dec(b[i]);
inc(s);
end;
ans[i]:=s-1;
f[s-1]:=false;
end;

回答2:

这是某年NOIP的题,你可以搜搜看。貌似是96年的。