天天看點

c++基礎學習筆記——05-c++STLday13_貪吃蛇案例

在學習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; 友善去除最低最高分.

代碼如下:

二、貪食蛇案例

繼續閱讀