相當複雜的模擬題,有乙個點不懂,就是輸入的p段不知道有什麼用,既然後面輸入的角色段裡的許可權都會包含在p段裡,那這個p段感覺沒什麼用,所以我只是做了接收字串,沒有做任何處理,可能扣的10分就來自這裡吧。
定義了三個結構體,分別表示許可權,角色,使用者,來作為資料結構接收資料。剩下的就是模擬和查詢了。第一遍只有70分,然後我認認真真的寫了一遍注釋,找出了一處問題就是在輸入不分等級的許可權查詢時,若這個許可權本身的分等級的,那麼要輸出最大的等級,而我忽略了這一點。不得不說,認認真真寫一遍注釋可以幫助自己再一次理清程式的邏輯順序。更改後得了90分,**如下,注釋非常詳細:
#include#includeusing namespace std;
//表示許可權的結構體
struct pri
;//表示角色的結構體
struct role
ro[110];//臨時儲存角色的陣列。
//表示使用者的結構體
struct user
us[110];
int main()
//若分等級
else
}} //輸入使用者
int u;
cin>>u;
for(int i=0;i>na>>num;
us[i].name=na;
us[i].num=num;
for(int j=0;j>temp;
//在許可權陣列中找到這個許可權,新增到使用者中
for(k=0;ro[k].name!=temp;k++);
us[i].a[j]=ro[k];
} }//輸入查詢
int q;
cin>>q;
while(q--)}}
//flag為true表示沒有找到許可權或者該許可權分等級,max為+表示他沒有被改變過,則表示沒有找到許可權,就輸出false;否則輸出max
if(flag)
}//若沒找到則輸出false
if(flag)
cout<<"false"<} }
return 0;
}
CCF 201612 3 許可權查詢
p段是給出的基本許可權,其實沒有必要去處理,因為題目中告知 r段的資訊一定是準確的。處理r段時,使用map rolemap 即每個role對應一些許可權,而許可權的形式是 許可權名,等級 其中等級為 1表示它是不分等級許可權。處理u段時,儲存每個user對應的角色名稱,採用map usermap 即...
許可權查詢 CCF201612 3
傳送門 題解 雷少的stl真的玩的太厲害了,雷少是我見過現實版身邊最勵志的人,很刻苦,很玩命,像雷少學習。開始正解 這個題使用三個map即可,第乙個map儲存許可權,第二個map儲存角色,value儲存許可權陣列,第三個map儲存使用者,然後直接進行模擬即可。附上 includeusing name...
ccf 201612 3 許可權查詢
ccf 201612 3 許可權查詢 解題思路 建立乙個二維矩陣儲存許可權和角色 還差30分emmm 1 include2 include3 include4 using namespace std 5const int maxn 100 5 6 const int maxq 10000 5 7 m...