当前位置: 代码迷 >> Java相关 >> 这道JAVA编码题怎么做?
  详细解决方案

这道JAVA编码题怎么做?

热度:319   发布时间:2007-07-13 14:52:39.0
这道JAVA编码题怎么做?

2、编程解决编码问题:设有一个数组A[N],数组中存放的元素为0―N-1之间的整数,且各不相同,。例如:N=6时,A=(4,3,0,5,1,2),编码定义如下:
A[0]的编码为0;
A[i]的编码为:在 A[0],A[1],…A[i-1]中比A[i]的值小的个数(i =1,2,…… N-1)
因此得到A的编码为:B=(0,0,0,3,1,2)
要求程序实现:
(1) 译码:给出数组A后,求出其编码;
(2) 破译:给出数组A的编码后,求出A中的原数据。

搜索更多相关的解决方案: JAVA  编码  译码  数据  

----------------解决方案--------------------------------------------------------
我大概知道怎么做:
(1)这个小题简单,只是数组元素的比较.
(2)解码的算法是这样的:
1 定义一个数组B,元素全部设为 n,表示还没解码
2
外循环i:0->n-1
定义m=i

内循环j:n-1开始递减
内循环体:
从数组编码A的最右边开始扫描
在j位置递减过程中,如果在碰到B中已赋值(不等于n)的数据前就已经在A中j位置找的等于m的数据,则将i赋给B的j位置.
  如果找不到,那么每碰到一个已赋值(不等于n)的数据,m就减1,再继续向前扫描,值到碰到在B中没有赋值,而在A中又跟m匹配的位置,将i赋给B的这个位置.
  呵呵,好像有点拗口.经过纸上运算应该是正确的.有时间我再编出来.


[此贴子已经被作者于2007-7-14 23:16:16编辑过]


----------------解决方案--------------------------------------------------------
?
----------------解决方案--------------------------------------------------------
回复:(bihao123)这道JAVA编码题怎么做?

要有一个记录原码的数组 originCode
一个记录编码的数组 finalCode
一个方法用来编码  public int[] coding(int[] a)
一个方法用来解码 public int[] encoding(int[] a)
编出来比我想象的还简单,帅呆了
如果没人看的话我下次就不传上来了,浪费我劳动力 TT

原程序


[此贴子已经被作者于2007-7-17 18:46:01编辑过]


----------------解决方案--------------------------------------------------------
呵呵!~写得还可以!~

----------------解决方案--------------------------------------------------------

谢谢赐教!
----------------解决方案--------------------------------------------------------
可以学习学习|!
----------------解决方案--------------------------------------------------------
  相关解决方案