在加密算法的中间,我已经编写了代码来随机随机播放java中的一系列数字。 这是代码:
public class permute6 {
public static void main(String args[])
{
Random rand = new Random();
int arr[] = {10,20,30,40,50,60,70,80};// Original Array
System.out.println("Original array is" );
for(int k = 0; k<arr.length;k++ )
System.out.print(arr[k] + "\t" );
System.out.println(" ");
int max = arr.length - 1;
int min = 0;
int rnum;
int larr = arr.length - 1;
int[] parr = new int[arr.length];// to store the permuted array
int flag = 0;// 'flag' to flag the recurring number
int plen = parr.length - 1;
for(int i = 0 ; i < arr.length ; i++)
{
rnum = (rand.nextInt((max-min)+1) + min);// roll for the
random number
parr[plen] = arr[rnum];
arr[rnum] = arr[larr];
larr--;// to reduce the size of the original array
plen--;// to make the parr to act like a stack
max--;
}
System.out.println("Permuted array is" );
for(int k = 0; k<arr.length;k++ )
System.out.print(parr[k] + "\t" );
System.out.println();
}
}
如果初始数组是{10,20,30,40,50,60,70,80}
然后其中一个改组的结果是
50 20 30 10 60 80 70 40
现在,如果我传输此数组,那么如何在目的地端取回原始序列?可以做些什么来跟踪序列? 这里缺少什么....感谢任何帮助!!
答案 0 :(得分:0)
您可以将两个数组提交到目标parr和temp; 帕尔:[50 20 30 10 60 80 70 40] 和 temp(它基本上与原始阵列的区别,例如parr-arr):
像{50,20,30,10,60,80,70,40} - {10,20,30,40,50,60,70,80} temp = {40,0,0,-30,10,20,0,-40}
现在, 在目的地再次得到parr和temp&#34; parr-temp&#34; {50,20,30,10,60,80,70,40} - {40,0,0,-30,10,20,0,-40} = {10,20,30,10 - ( - 30),50,60,70,40 - ( - 40)}
您将获得原始序列而不在目的地发送原始数组
另一个解决方案与前一个解决方案有关,但它会避免将两个阵列转移到目的地。将temp和parr合并为一个数组,例如newArr = {50,40,20,0,30,0,10,-30,60,10,80,20,70,0,40,-40} 并且在目的地只是从下一个元素中减去每个元素,你将只使用一个数组获得原始数组。