【GRYZ2015】足球聯賽

【問題描述】

  巴蜀中學新一季的足球聯賽開幕了。足球聯賽有 n只球隊參賽,每賽季,每隻球隊要與其他球隊各賽兩場主客各一場,贏一場得 3 分,輸一場不得分,平局兩隻隊伍各得一分。

  英勇無畏的小鴻是機房的主力前鋒,她總能在關鍵時刻踢出一些匪夷所思的妙球。但是很可惜,她過早的燃燒完了她的職業生涯,不過作爲一個能夠 Burning 的 girl,她的能力不止如此,她還能預測這個賽季所有球隊的比賽結果。

  雖然她能準確預測所有比賽的結果,但是其實她不怎麼厲害,Mr.Gao 上數學課時她總是在 sleep,因此她的腦裏只有整數沒有實數,而且,她只會 10 以內非負整數的加法運算,因此她只有結果卻無法知道誰會獲得聯賽的冠軍。

  小鴻想給冠軍隊伍的所有隊員一個擁抱,所以她把計算結果的任務交給了你:現在,給你一個 n*n 的矩陣表示比賽情況。第 i 行第 j 列的字母表示在第 i 只隊伍 在主場迎戰第 j 只隊伍的比賽情況,W 表示主隊贏,L 表示主隊輸,D 表示平局。現在需要你給出最後能得到小鴻擁抱的隊伍編號,如有多支隊伍分數最高,按字典序輸出編號。

【輸入格式】

  第一行一個整數 n。
  接下來 n 行,每行 n 個字符,表示輸贏情況。第 i 行第 i 列爲 - ,因爲一隻隊伍不可能與自己比賽。

【輸出格式】

  輸出得分最高的隊伍編號。如有多個在一行中輸出,用一個空格分開。

【輸入樣例】

【樣例1】
 3
 -WW
 W-W
 WW-

【樣例2】
 5
 -DWWD
 L-WLL
 DD-WD
 DDL-L
 DDLL-

【輸出樣例】

【樣例1】
 1 2 3

【樣例2】
 1

【數據範圍】

對於 40%的數據,滿足 N<=20
對於 100%的數據,滿足 N<=50

題目大意:給出一個字符矩陣,要求在這個字符矩陣中統計每個球隊最後的得分。然後輸出得分最高的球隊編號。
解:設一個數組c記錄各隊分數,讀入字符矩陣,用兩重循環i,j順序掃描整個矩陣,掃描到的字符是W時則c[i]+=3,由於是主場分數且任意兩隊要賽2次,所以掃描到L時c[j]+=3(易錯點),掃描到D時c[i]++,c[j]++。然後在c中順序找出最大分數和對應的球隊編號。
知識點:字符數組的處理。

#include<cstdio>
#include<iostream>
#include<cstring>
#include<queue>
#include<algorithm>
#define maxn 55
using namespace std;
char mat[maxn][maxn];
int n,c[maxn];
int main()
{
    //freopen("my.in","r",stdin);
    //freopen("my.out","w",stdout);

    scanf("%d",&n);
    for(int i=0;i<n;i++)
    scanf("%s",mat[i]);

    for(int i=0;i<n;i++)
    for(int j=0;j<n;j++)
    {
        if(mat[i][j]=='W'){c[i]+=3;}
        if(mat[i][j]=='L'){c[j]+=3;}
        if(mat[i][j]=='D'){c[i]++;c[j]++;}
    }

    int maxc=0;
    for(int i=0;i<n;i++)
    maxc=max(maxc,c[i]);

    for(int i=0;i<n;i++)if(c[i]==maxc)
    printf("%d ",i+1);

    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章