ccf-csp考试2015年9月第1题。
自己写的代码如下:
#include <stdio.h>
int main() {
int N;
scanf("%d", &N);
int arr[1010];
for(int i = 0; i < N; i++)
scanf("%d", &arr[i]);
int count = 1;
bool flag = false;
for(int i = 0; i < N-1; ) {
for(int j = i+1 ; j < N; j++ ) {
if(arr[i] == arr[j])
continue;
else {
i = j;
count++;
}
if(j == N - 1) {
flag = true;
break;
}
}
if(flag)
break;
}
printf("%d\n", count);
return 0;
}
这段代码在不同地方运行会出现不同的问题。
在ccf-csp判题系统里运行会出现运行超时问题,满分100分只得30分,这个判题系统用的c/c++编译器是Dev-cpp,java编译器是eclipse。
在xcode(version 8.2.1)里运行时,当N<285时,秒出结果,当N>=285时,输完数据后没有任何反应,不出现输出结果,一段时间后出现Program ended with exit code: 9。
但在c-free5里N无论取什么值都可以完美运行,秒出结果。
另外,我把代码改成了java,在intellij idea和eclipse里也是秒出结果。
所以请问这段代码有什么问题呢?
最后两个输入相同的话你的程序会continue而没置flag,导致死循环。
而且这程序写的过于混乱。
讲道理直接
for(int i=1;i<n;++i)ans+=a[i]!=a[i-1];