Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 排列的倒数?_Java_Arrays_Permutation - Fatal编程技术网

Java 排列的倒数?

Java 排列的倒数?,java,arrays,permutation,Java,Arrays,Permutation,请有人解释一下这个例子及其答案。我知道如果一个数组有{3,2,6},那么它的逆矩阵就是{6,2,3}。这是因为下面的代码似乎没有实现这一点而被问到的吗 假设数组int pi[128]包含数字0、1、…、127的排列 您将使用哪一两行Java代码高效地生成 阵列ip中的pi[128] 回答: for (i=0; i<128; ++i) ip[pi[i]] = i (i=0;i我不知道你在哪里看到了这个答案,因为它是错的 为了进行说明,让我们使用大小为4的数组。 使用pi={

请有人解释一下这个例子及其答案。我知道如果一个数组有{3,2,6},那么它的逆矩阵就是{6,2,3}。这是因为下面的代码似乎没有实现这一点而被问到的吗

假设数组int pi[128]包含数字0、1、…、127的排列

您将使用哪一两行Java代码高效地生成 阵列ip中的pi[128]

回答:

 for (i=0; i<128; ++i) 
      ip[pi[i]] = i

(i=0;i我不知道你在哪里看到了这个答案,因为它是错的

为了进行说明,让我们使用大小为4的数组。
使用
pi={3,0,1,2}
,结果是
ip={1,2,3,0}

或者
pi={0,1,2,3}
变成
ip={0,1,2,3}

不知道“逆”一词的定义是什么,这些都是正确的结果

正确答案是:

for (int i = 0; i < 128; ++i)
    ip[i] = pi[127 - i];
for(int i=0;i<128;++i)
ip[i]=pi[127-i];

我不知道你在哪里看到了这个答案,因为它是错的

为了进行说明,让我们使用大小为4的数组。
使用
pi={3,0,1,2}
,结果是
ip={1,2,3,0}

或者
pi={0,1,2,3}
变成
ip={0,1,2,3}

不知道“逆”一词的定义是什么,这些都是正确的结果

正确答案是:

for (int i = 0; i < 128; ++i)
    ip[i] = pi[127 - i];
for(int i=0;i<128;++i)
ip[i]=pi[127-i];

继续@Andreas answer。您的答案只是复制了数组。我不知道如何将其称为“反转”数组。我创建了一些示例,用于根据问题设置数组(元素较少)并打印结果

示例“反转”是数组并打印结果

导入java.util.array;
公共类HelloWorld{
公共静态void main(字符串[]args){
int-arraylelength=10;
int[]pi=新的int[arrayLength];
int[]ip=新的int[arrayLength];
int i=0;

对于(i=0;i继续@Andreas answer。您的答案只是复制了数组。我不知道如何将其称为“反转”数组。我创建了一些示例,根据问题设置数组(元素较少),并打印结果

示例“反转”是数组并打印结果

导入java.util.array;
公共类HelloWorld{
公共静态void main(字符串[]args){
int-arraylelength=10;
int[]pi=新的int[arrayLength];
int[]ip=新的int[arrayLength];
int i=0;
对于(i=0;i来说,答案是错误的(甚至没有编译)

ip
数组将包含每个数字的索引,而不是“逆”

在排列有序的情况下,结果数组将与输入相同:

int[] pi = {0, 1, 2, 3, 4};
int[] ip = new int[5];
for (int i = 0; i < 5; ++i)
    ip[pi[i]] = i;
System.out.println(Arrays.toString(ip));
无论“反向”是什么意思,我打赌它并不意味着“相同”。你的例子强烈地表明它意味着“反向”,而“答案”显然不能产生


根据你的问题,我认为你的教授缺乏知识和经验,而且不是抽屉里最锋利的刀。我的建议是尽快找另一位老师。

答案是错误的(甚至没有编译)

ip
数组将包含每个数字的索引,而不是“逆”

在排列有序的情况下,结果数组将与输入相同:

int[] pi = {0, 1, 2, 3, 4};
int[] ip = new int[5];
for (int i = 0; i < 5; ++i)
    ip[pi[i]] = i;
System.out.println(Arrays.toString(ip));
无论“反向”是什么意思,我打赌它并不意味着“相同”。你的例子强烈地表明它意味着“反向”,而“答案”显然不能产生



根据你的问题,我认为你的教授缺乏知识和经验,而且不是抽屉里最锋利的刀。我的建议是尽快找另一位老师。

这是置换$\pi$的“逆置换”,任何数学家都会使用。

这是“逆置换”对于置换$\pi$,任何数学家都会使用。

逆置换是一种置换,您可以通过在数组中元素值指定的位置插入元素的位置来获得。

逆置换是一种置换,您可以通过在位置spe插入元素的位置来获得由数组中的元素值指定。

有趣的排列,但我看不出哪里是“逆”:-根据我的定义,答案是错误的。答案来自我的教授指定的考试。可能这取决于您如何将数组
pi
解释为置换。它应该是循环符号?或者它是
i->pi[i]的映射
?在后一种情况下,您的答案看起来像是一个逆映射(即
pi[i]->i
)有趣的排列,但我看不出哪里是“逆”:-根据我的定义,答案是错误的。答案来自我的教授指定的考试。可能这取决于您如何将数组
pi
解释为置换。它应该是循环符号?或者它是
i->pi[i]的映射
?在后一种情况下,您的答案看起来像是一个逆映射(即,
pi[i]->i
),OP提供的答案是正确的。它计算数学意义上的置换的逆。OP想要反转置换,但错误地将其反转。
[0,1,2,3,4]
是一种身份置换,因此它本身是一种逆置换,因此这一结果是可以预料的。你本可以避免亲自攻击OP的教授,因为他们确实提供了一种计算逆置换的解决方案。他们没有错。OP提供的答案是正确的。它计算数学s中置换的逆置换ense.OP想要反转排列,但将其误认为是反转。
[0,1,2,3,4]
是一种身份排列,因此是它自己的反转,因此这一结果是意料之中的。您可以避免亲自攻击OP的职业
[0, 1, 2, 3, 4]