思路:
第一步:用3個結構體陣列表示使用者、角色、許可權的資訊,定義如下:
struct privilege //定義許可權
;struct role //定義角色
;struct user //定義使用者
;
第二步:然後就是輸入許可權、角色、使用者的資訊。這裡要理清關係:乙個使用者可以有多個角色,乙個角色有多個許可權
第三步:輸入查詢資訊,開始查詢:先查詢使用者資訊,若使用者存在,再遍歷使用者的角色,再遍歷每個角色的許可權資訊,當許可權名字相等時,判斷查詢的種類,根據查詢的種類改變標識變數的值。
第四步:根據標識變數輸出結果
ac**(有點多):
#include#includeusing namespace std;
struct privilege //定義許可權
;struct role //定義角色
;struct user //定義使用者
; struct user user[101];
struct role role[101];
struct privilege pri[101];
int findrole(string name)
} return -1;
}int finduser(string name)
} return -1;
}struct privilege getprivilege(string quanxian)
else //不帶等級
return p;
}int findprivilege(string name)
} return -1;
} int main()
cin>>r;
// 輸入角色
for(i = 0; i < r; i++)
} cin>>u;
//輸入使用者
for(i = 0; i < u; i++) }
cin>>q;
// 開始查詢
for(i = 0; i < q; i++)
else if(p.level == -1 && u.urole[j].privilege[k].level != -1) //分等級許可權的不分等級查詢
}else if(p.level != -1 && u.urole[j].privilege[k].level != -1)//分等級許可權的分等級查詢 } }
}}} if(priviflag == 1 && maxlevel != -1)
;struct role;
struct user;
struct category cate[101];
struct role role[101];
struct user user[101];
int p,r,u,q;
struct category getcategory(string s)else
return c;
} int finduser(string name)
} return -1;
}int findrole(string rolename)
} return -1;
} void findcategory(struct user oneuser,string quanxian)else
for(i = 0; i < oneuser.rolenum; i++)
// 分等級許可權帶等級查詢
if(onecategory.name == quanxianname && level != -1 && onecategory.level >= level)
// 分等級許可權不帶等級查詢
if(level == -1 && onecategory.level != -1 && quanxianname == onecategory.name)
} } }
if(flag == 1)
cin>>r;
//輸入角色
for(i = 0; i < r; i++)
} cin>>u;
//輸入使用者
for(i = 0; i < u; i++)
} }cin>>q;
//開始查詢
while(q--)else
} 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...