请问两段代码结果有什么区别
查看原帖
请问两段代码结果有什么区别
326382
Thomas_Cat楼主2021/9/16 23:47

第一段:

long long MIN=0,flag=m;
    if(dragon>tiger){
        MIN=dragon-tiger;
        for(int i=m+1;i<=n;i++){
            if(dragon-(s2*(i-m)+tiger)<MIN||(dragon-(s2*(i-m)+tiger)==MIN&&i<flag)){
                flag=i;
                MIN=abs(dragon-(s2*(i-m)+tiger));
                //cout<<1<<"flag:"<<i<<"MIN:"<<MIN<<endl;
            }
        }
    }
    else if(dragon<tiger){
        MIN=tiger-dragon;
        for(int i=1;i<m;i++){
            if(tiger-(s2*(m-i)+dragon)<MIN||(tiger-(s2*(m-i)+dragon)==MIN&&i<flag)){
                flag=i;
                MIN=abs(tiger-(s2*(m-i)+dragon));
                //cout<<2<<"flag:"<<i<<"MIN:"<<MIN<<endl;
            }
        }
    }

第二段:

long long flag=m;
    long long MIN=abs(tiger-dragon);
    for(int i=1;i<=n;i++){
        long long L=dragon,R=tiger;
        if (i<m){
            L+=(long long)(m-i)*s2;
            if (abs(R-L)<MIN){
                MIN=abs(R-L);
                flag=i;
            }
        }
        if (i>m){
            R+=(long long)(i-m)*s2;
            if (abs(R-L)<MIN){
                MIN=abs(R-L);
                flag=i;
            }
        }
    }

个人认为运行结果应该是一样的啊……

为啥第一个40第二个100……

2021/9/16 23:47
加载中...