為什么會WA呢?
題目:
小明准備考研,要買一些書,雖然每個書店都有他想買的所有圖書,但不同書店的不同書籍打的折扣可能各不相同,因此價格也可能各不相同。因為資金所限,小明想知道不同書店價格最便宜的圖書各有多少本,以便節約資金。
輸入格式:
首先輸入一個正整數T,表示測試數據的組數,然后是T組測試數據。 對於每組測試,第一行先輸入2個整數m,n(1≤m,n≤100),表示想要在m個書店買n本書;第二行輸入m個店名(長度都不超過20,並且只包含小寫字母),店名之間以一個空格分隔;接下來輸入m行數據,表示各個書店的售書信息,每行由小數位數不超過2位的n個實數組成,代表對應的第1至第n本書的價格。
輸出格式:
對於每組測試數據,按要求輸出m行,分別代表每個書店的店名和能夠提供的最廉價圖書的數量,店名和數量之間留一空格。當然,比較必須是在相同的圖書之間才可以進行,並列的情況也算。 輸出要求按最廉價圖書的數量cnt從大到小的順序排列,若cnt相同則按店名的ASCII碼升序輸出。
輸入樣例:
1
3 3
xiwangshop kehaishop xinhuashop
11.1 22.2 33.3
11.2 22.2 33.2
10.9 22.3 33.1
輸出樣例:
xinhuashop 2
kehaishop 1
xiwangshop 1
#include<iostream> #include<algorithm> using namespace std; struct shop{ string name;double a[150];int cnt; }; shop shops[150]; bool cmp(shop s,shop t){ if(s.cnt!=t.cnt)return s.cnt>t.cnt; else return s.name<t.name; } void run(){ int m,n;cin>>m>>n; for(int i=1;i<=m;i++)cin>>shops[i].name; for(int i=1;i<=m;i++){ shops[i].cnt=0; for(int j=1;j<=n;j++){ cin>>shops[i].a[j]; } } for(int i=1;i<=n;i++){ int pos=1; for(int j=2;j<=m;j++){ if(shops[j].a[i]<=shops[pos].a[i])pos=j; } for(int k=1;k<=m;k++){ if(shops[k].a[i]==shops[pos].a[i])shops[k].cnt++; } } sort(shops+1,shops+n+1,cmp); for(int i=1;i<=m;i++){ cout<<shops[i].name<<' '<<shops[i].cnt<<endl; } } int main(){ int t;cin>>t; while(t--){ run(); } return 0; }
