在學習c++提高-STL總結了筆記,并分享出來。有問題請及時聯系部落客:Alliswell_WP,轉載請注明出處。
05-c++STLday13_貪吃蛇案例
一、上節作業——綜合案例(學校演講比賽)
》比賽規則:某市舉行一場演講比賽( speech_contest ),共有24個人參加。比賽共三輪,前兩輪為淘汰賽,第三輪為決賽。
》比賽方式:分組比賽,每組6個人;選手每次要随機分組,進行比賽;
>第一輪分為4個小組,每組6個人。比如編号為: 100-123. 整體進行抽簽(draw)後順序演講。當小組演講完後,淘汰組内排名最後的三個選手,然後繼續下一個小組的比賽。
>第二輪分為2個小組,每組6人。比賽完畢,淘汰組内排名最後的三個選手,然後繼續下一個小組的比賽。
>第三輪隻剩下1組6個人,本輪為決賽,選出前三名。
》比賽評分:10個評委打分,去除最低、最高分,求平均分每個選手演講完由10個評委分别打分。該選手的最終得分是去掉一個最高分和一個最低分,求得剩下的8個成績的平均分。選手的名次按得分降序排列。
用STL程式設計,求解這個問題
1)請列印出所有選手的名字與參賽号,并以參賽号的升序排列。
2)列印每一輪比賽後,小組比賽成績和小組晉級名單
需求分析:
1) 産生選手 ( ABCDEFGHIJKLMNOPQRSTUVWX ) 姓名、得分;選手編号
2) 第1輪 選手抽簽 選手比賽 檢視比賽結果
3) 第2輪 選手抽簽 選手比賽 檢視比賽結果
4) 第3輪 選手抽簽 選手比賽 檢視比賽結果
實作思路:
需要把選手資訊、選手得分資訊、選手比賽抽簽資訊、選手的晉級資訊儲存在容器中,需要涉及到各個容器的選型。
選手可以設計一個類Speaker(姓名和得分)
所有選手的編号可以單獨放在一個vector容器中,做抽簽用
所有選手編号和選手資訊,可以放在容器内:map<int, Speaker>
所有選手的編号名單,可以放在容器:vecter<int> v1中
第1輪晉級編号名單,可以放在容器vecter<int> v2中
第2輪晉級編号名單,可以放在容器vecter<int> v3中
第3輪前三名名單,可以放在容器vecter<int> v4中
每個小組的比賽得分資訊,按照從大到小的順序放在multimap<成績, 編号, greater<int>>中
每個選手的得分,可以放在容器deque<int> dscore; 友善去除最低最高分.
代碼如下:
二、貪食蛇案例