唯品會一個專做特賣的網(wǎng)站廣告優(yōu)化教程
Alice和Bob在玩骰子游戲,他們用三顆六面的骰子,游戲規(guī)則如下:
- 點(diǎn)數(shù)的優(yōu)先級是1點(diǎn)最大,其次是6,5,4,3,2。
- 三個骰子點(diǎn)數(shù)相同,稱為"豹子",豹子之間按點(diǎn)數(shù)優(yōu)先級比較大小。
- 如果只有兩個骰子點(diǎn)數(shù)相同,稱為"對子",對子之間按點(diǎn)數(shù)優(yōu)先級比較大小。
- 其他情況稱為"點(diǎn)子",點(diǎn)子按點(diǎn)數(shù)和比較大小。
- 豹子比對子、點(diǎn)子大,對子比點(diǎn)子大,如果對子的點(diǎn)數(shù)優(yōu)先級相同,就看剩余那個骰子的點(diǎn)數(shù)優(yōu)先級。
現(xiàn)在給你Alice和Bob投擲骰子的情況,判斷一下勝負(fù)情況。
輸入
第一行輸入一個整數(shù)K,表示游戲的次數(shù)。 以后每兩行表示一個樣例,第一行是Alice骰子的點(diǎn)數(shù)。第二行是Bob骰子的點(diǎn)數(shù)。
輸出
如果是Alice贏,輸出"Alice",如果是Bob贏,輸出"Bob",否則輸出"Draw"。
樣例輸入
3 1 1 1 6 6 6 2 1 2 4 5 4 4 5 6 6 5 4樣例輸出
Alice Bob Draw
解題思路: 這就是個比大小問題,但是這里有“兩套規(guī)則”,一:?如果有豹子或者對子時,1是最大的;二:如果只有單點(diǎn)數(shù)的話,比較的是 三個骰子數(shù)之和 ,這時 1又是最小的了。?
這里我們優(yōu)先設(shè)置 1 是最大的,把它改成7。然后我們把所有情況都轉(zhuǎn)換成 賦值運(yùn)算。豹子最大,賦值100,對子其次,賦值10,最后單個點(diǎn)數(shù)賦值1。(參考代碼)
最后比較 Alice 和 Bob 兩個 誰的骰子賦值更高
AC代碼:
#include <stdio.h>
#include <stdlib.h>int ansA, ansB;
int diceA[5], diceB[5];void compere(int* dice,int &ans)
{if (dice[0] == dice[1] && dice[1] == dice[2])ans = dice[0]*100;else if (dice[0] == dice[1])ans = dice[0]*10 + dice[2];else if (dice[1] == dice[2])ans = dice[1]*10 + dice[0];else if (dice[0] == dice[2])ans = dice[0]*10 + dice[1];elseans = (dice[0]-1)%6 + (dice[1]-1)%6 + (dice[2]-1)%6;
}int main()
{int K;scanf("%d",&K);while ( K --){for (int i = 0; i < 3; i ++){scanf("%d",&diceA[i]);if (diceA[i] == 1) diceA[i] = 7;}for (int i = 0; i < 3; i ++){scanf("%d",&diceB[i]);if (diceB[i] == 1) diceB[i] = 7;}compere(diceA,ansA);compere(diceB,ansB);if (ansA > ansB) puts("Alice");else if (ansA < ansB) puts("Bob");else puts("Draw");}return 0;
}