**已关闭。**此问题为not reproducible or was caused by typos。目前不接受答复。
此问题是由打印错误或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
4天前关闭。
Improve this question
我在codeforces上做问题268A,这是我写的代码:
using namespace std;
#include <iostream>
#include <cmath>
int main(){
int n,a,counter=0;
cin>>n;
int colour[n];
for (int i = 0;i<2*n;i++){
cin>>a;
colour[i]=a;
}
for (int i=0;i<2*n;i++){
if (i%2==0){
for (int k=0;k<2*n;k++){
if ((k%2==1)&&(colour[i]==colour[k])){
counter++;
}
}
}
}
cout<<counter;
}
当我输入
4
100 42
42 100
5 42
100 5
程序只是继续运行,并没有提供一个输出,而我期望的输出是5。
奇怪的是,当我将cout<<colour[i]<<endl;
添加到第一个for循环的末尾时,我得到了counter的正确输出,程序结束。
有人能解释一下吗?
1条答案
按热度按时间7gyucuyw1#
这是因为在本例中,
colour
数组只有4个位置,而for
循环访问8个位置。要解决这个问题,请让colour
的大小为2*n
,而不是n
。