回 帖 发 新 帖 刷新版面

主题:五星级题

设有一个包含N个元素的一维数组A,存放的元素为0~N-1(1< N < =10)之间的整数,且
A[i]≠A[j](i≠j),编码规则如下: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

回复列表 (共1个回复)

沙发

我觉得不难啊
先考虑(n-1)如果它在第i个位置 那么他前面的数一定都比它小
找到满足这个规律的第一个数(倒着搜)能保证这个数一定是n-1
*满足这个规律的书可以有多个 比如 1 2 3 4 5
然后就简单了 把最大的数删除 原编码数列依然成立(因为n-1的存在不会对任何数的编码产生影响) 后边的数以此位数减一 然后转化为n=n-1的问题
接下来干什么就不用我说了吧

我来回复

您尚未登录,请登录后再回复。点此登录或注册