1. 程式人生 > 實用技巧 >1046 划拳 (15分)

1046 划拳 (15分)

題目

划拳是古老中國酒文化的一個有趣的組成部分。酒桌上兩人划拳的方法為:每人口中喊出一個數字,同時用手比劃出一個數字。如果誰比劃出的數字正好等於兩人喊出的數字之和,誰就贏了,輸家罰一杯酒。兩人同贏或兩人同輸則繼續下一輪,直到唯一的贏家出現。

下面給出甲、乙兩人的划拳記錄,請你統計他們最後分別喝了多少杯酒

輸入格式

輸入第一行先給出一個正整數 N(≤100),隨後 N 行,每行給出一輪划拳的記錄,格式為:
甲喊 甲劃 乙喊 乙劃
其中是喊出的數字,是劃出的數字,均為不超過 100 的正整數(兩隻手一起劃)。

輸出格式

在第 1 行中輸出有可能是主元的元素個數;在第 2 行中按遞增順序輸出這些元素,其間以 1 個空格分隔,行首尾不得有多餘空格。

輸入樣例:

5
8 10 9 12
5 10 5 10
3 8 5 12
12 18 1 13
4 16 12 15

輸出樣例:

1 2

解析

  用a,b表示甲乙喝的杯數,sum表示甲乙喊得數之和,如果兩個人劃得相等,那麼一定都不喝酒continue掉,否則再判斷和sum大小
  用s[1] s[3]表示甲乙劃得數,如果sum == s[1],甲贏了,乙喝酒,b++,如果sum == s[3],乙贏了,a++

答案

#include<iostream>
using namespace std;

int main(){
    int s[4],a = 0,b = 0,sum,n;
    cin >> n;
    while(n --){
        cin >> s[0] >> s[1] >> s[2]  >> s[3] ;

        sum = s[0] + s[2];
        if(s[1] == s[3] ) continue;
        if(s[1] == sum){
            b ++ ;
        }
        if(s[3] == sum){
            a ++ ;
        }
    }
    cout << a <<" "<<b;
}