2022年6月12日 星期日

[1753] Maximum Score From Removing Stones

這一題是medium感覺有點訝異?!我想是因為hint 有說從最大的拿掉就是最佳解的緣故, 所以首先不需要證明它了;再來是有看到強者的bit operation 解法我完全看不懂XD~~~~
附在後面再找人討論看看XD~~~ 以上.

int maximumScore(int a, int b, int c){
    int tmpMax;
    int score=0;
    while( (a>0 && b>0) || (c>0 && b>0) || (a>0 && c>0))
    {
        if (a>=b && a>=c)
        {//a
            a--;
            if (b>0) b--;
            else if (c>0) c--;
        }
        else if (b>=a && b>=c)
        {//b
            b--;
            if (a>0) a--;
            else if (c>0) c--;
        }
        else if (c>=a && c>=b)
        {//c
            c--;
            if (a>0) a--;
            else if (b>0) b--;
        }
            score++;
    }
    return score;
}

強者解法:  (初步推測它是在排序abc 是嗎?!)

int maximumScore(int a, int b, int c){
        if (a > b){
            a ^= b;
            b ^= a;
            a ^= b;
        }
        if (a > c){
            a ^= c;
            c ^= a;
            a ^= c;
        }
        if(b > c){
            b ^= c;
            c ^= b;
            b ^= c;
        }
        if(a < c - b){
            return a + b;
        }else{
            return (a + b + c) >> 1;
        }

沒有留言:

張貼留言