【問題描述】
巴蜀中學新一季的足球聯賽開幕了。足球聯賽有 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;
}