Java 排列的倒数?
请有人解释一下这个例子及其答案。我知道如果一个数组有{3,2,6},那么它的逆矩阵就是{6,2,3}。这是因为下面的代码似乎没有实现这一点而被问到的吗 假设数组int pi[128]包含数字0、1、…、127的排列 您将使用哪一两行Java代码高效地生成 阵列ip中的pi[128] 回答: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={
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]