一段代码,xcode输完数据没反应,ccf-csp在线判题系统显示“运行超时”,但c-free5秒出结果。

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里也是秒出结果。
所以请问这段代码有什么问题呢?

阅读 5.6k
1 个回答

最后两个输入相同的话你的程序会continue而没置flag,导致死循环。

而且这程序写的过于混乱。

讲道理直接
for(int i=1;i<n;++i)ans+=a[i]!=a[i-1];

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题