思路
我的思路是:
首先對資料進行分析:
使用者輸入的是編號、借鑰匙的時刻、借鑰匙的時間。
所以不妨我們把資料轉化為編號、借/換的時刻、flag標記這個時刻是在借or還鑰匙。
首先應該建立乙個物件,這個物件有時刻、flag標記、鑰匙編號id這三個屬性。
所以我們可以設定兩個儲存這個物件的vector陣列 arr1 arr2 來分別儲存借的和還的時刻。
演算法分析:
對arr1 arr2 進行合併,然後進行排序(注意,這裡的排序是這個題的核心,我們既要滿足先借後還、同時還的話編號小的優先、一借一還應該先
c++ ac
#include
#include
#include
#include
#include
//萬能標頭檔案,囊括一切
using
namespace std;
class
key//定義物件,具有鑰匙編號,借/還的時刻,flag標記是要借還是還};
vector arr1;
vector arr2;
bool
postive_sort
(key s1,key s2)
//通過排序可以使其滿足老師借還鑰匙的三個條件
else
}int
main()
vector
::iterator it;
//定義vector陣列對應的迭代器
for(
int i=
0; i)for
(it =arr2.
begin()
; it!=arr2.
end(
); it++
)sort
(arr1.
begin()
,arr1.
end(
),postive_sort)
;//利用自己定義的多字段sort方法來對vector陣列進行排序
for(it=arr1.
begin()
; it!=arr1.
end(
); it++)}
}if((
*it)
.flag==1)
}}}for
(int i=
0; i)}
最後忠心祝願大家能在ccf認證中取得好成績! csp 201709 2 公共鑰匙盒
解釋 重點是看清楚第三段文字給出的條件,我就是落下了乙個條件,雖然給出的兩組測試通過了但是只得了40分。問題描述 有乙個學校的老師共用n個教室,按照規定,所有的鑰匙都必須放在公共鑰匙盒裡,老師不能帶鑰匙回家。每次老師上課前,都從公共鑰匙盒裡找到自己上課的教室的鑰匙去開門,上完課後,再將鑰匙放回到鑰匙...
CSP 201709 2 公共鑰匙盒
目錄 一 問題描述 二 實現 總結 有乙個學校的老師共用n個教室,按照規定,所有的鑰匙都必須放在公共鑰匙盒裡,老師不能帶鑰匙回家。每次老師上課前,都從公共鑰匙盒裡找到自己上課的教室的鑰匙去開門,上完課後,再將鑰匙放回到鑰匙盒中。鑰匙盒一共有n個掛鉤,從左到右排成一排,用來掛n個教室的鑰匙。一串鑰匙沒...
201709 2 公共鑰匙盒
注意審題,注意題目關鍵字,比如,還鑰匙時間相同時,按照編號放置 還有就是 對於第二題,一般都不太難,沒有什麼演算法可言,直接使用正常思維就好了,不要怕麻煩,簡單粗暴就好 給自己加油 include include include include include include include inc...