我正在寻找改进以下代码的方法,包括性能和产生运行时错误的事实。
这段代码创建了一个新的数组B(大小为n * n),我有一个循环来查找B元素的XOR并输出结果。
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
b[(i*n)+j+1]=a[i+1]+a[j+1];
}
}
for(int i=1;i<=len;i++{
xor=xor^b[i];
}
答案 0 :(得分:1)
你需要检查你的数组是从0还是1开始,这可能是你早期错误的真正原因,因为你的索引可能超过了数组的声明大小。
就表现而言,计算指数的乘数不是一个良好的开端
int b_index = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
b[b_index++] = a[i]+a[j];
}
}
然而,阅读整个问题,&#39;&#39;数组根本不需要:
int xor = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
xor ^= (a[i]+a[j]);
}
}