优化C代码->;已超过CodeChef解决方案时间

优化C代码->;已超过CodeChef解决方案时间,c,performance,optimization,time-complexity,C,Performance,Optimization,Time Complexity,什么是提示和技巧,使我的代码可以在给定的时间限制内执行?也许是一些逻辑上的改变或者其他什么 当我在CodeChef中提交我的解决方案时,它显示超出了时间限制,但我认为它是足够快的简单代码。如何在时间限制内执行,即3秒 代码 友邦保险[1000][1000]; 长整数imax=0; 长整数分数(整数ia、整数ib); int main(){ int ii,ij; 长内iut、ivt、ie; memset(友邦保险,1000000); scanf(“%d%d”、&iv和&ie); 如果((iv=2)

什么是提示和技巧,使我的代码可以在给定的时间限制内执行?也许是一些逻辑上的改变或者其他什么

当我在CodeChef中提交我的解决方案时,它显示超出了时间限制,但我认为它是足够快的简单代码。如何在时间限制内执行,即3秒

代码 友邦保险[1000][1000]; 长整数imax=0; 长整数分数(整数ia、整数ib); int main(){ int ii,ij; 长内iut、ivt、ie; memset(友邦保险,1000000); scanf(“%d%d”、&iv和&ie); 如果((iv=2)){
如果((ie>=(iv-1))&&(ie我给你的建议是通过分析器运行代码。我个人更喜欢


然后,当你发现瓶颈时,你可以尝试一下,或者把它贴在这里,而不是长长的列表。

你的观点是非常正确的。但这应该是一个评论,而不是一个答案。OP要求任何帮助和建议,我不想为他做他的工作,所以我提供了一个正确的方向。没有内存泄漏问题…我需要一些建议,以便能够对其进行优化,以防止超出时间。评测不仅仅检测内存泄漏,还可以向您显示代码花费的时间最多的地方,这样您就可以专注于优化代码的重要部分,而不是浪费时间。非常感谢您。我使用windows 7,请告诉我哪种评测器最合适适合我的需要
long int iv, aia[1000][1000];
long int imax = 0;
long int score(int ia, int ib);

int main() {

    int ii, ij;
    long int iut, ivt, ie;

    memset(aia, 0, 1000000);

    scanf("%d %d", &iv, &ie);

    if((iv <= 1000) && (iv >= 2)) {

        if((ie >= (iv-1)) && (ie <= ( (iv*(iv-1)) / 2) )) {

            for(ii = 0; ii<ie; ii++) {

                scanf("%d%d", &iut, &ivt);

                if((iut >= 0) && (ivt <= (iv -1))) {

                    scanf("%d", &aia[iut][ivt]);

                    if(aia[iut][ivt] < 0) {

                        return 1;
                    }

                    aia[ivt][iut] = aia[iut][ivt];
                }
                else {

                    return 1;
                }
            }

            for(ii = 0; ii<iv; ii++) {

                for(ij = 0; ij<iv; ij++) {

                   printf("%d ", score(ii, ij));
                   imax = 0;
                }

                printf("\n");
            }
        }
    }
    return 0;
}


long int score(int ia, int ib) {

    int ii;
    int long imaxt = 0;

    if(ia == ib) {

        return 0;
    }

    if(aia[ia][ib] != 0) {

        imax = aia[ia][ib];
    }

    for(ii = 0; ii<iv; ii++) {

        if((ii != ib) && (ii != ia)) {

            if(aia[ia][ii] != 0) {

                if(aia[ii][ib] != 0) {

                    imaxt = (aia[ia][ii] < aia[ii][ib]) ? aia[ia][ii] : aia[ii][ib];

                    if(imaxt > imax) {

                        imax = imaxt;
                    }
                }
            }
        }
    }
    return imax;
}