這一題是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;
}
}
沒有留言:
張貼留言