HDU2723 Electronic Document Security【字符串】【水题】
来源:互联网 发布:喜马拉雅有mac版吗 编辑:程序博客网 时间:2024/05/19 14:37
题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=2723
题目大意:
对一个文件进行访问控制,对每个文件建立一个访问控制表ACT,ACT有很多的用户组entities,
每个用户都有一定的访问权利。文件还有权限修改日志。形式为ExR,E是用户(可能是多个),R是
权限,x是操作,可以是+(把权限加到用户上)、-(从用户上减去权限)、=(给用户设置相应权限)。
最后输出每个用户对应的权限。没有权限则不输出,相邻的用户有相同的权限,则一起合并,然后
输出。
思路:
用数组ACT[]来存用户组,Map[][]来存用户和权限的对应关系。模拟写一遍就可以了。
AC代码:
#include<iostream>#include<algorithm>#include<cstdio>#include<cstring>using namespace std;char s[110],temp[110];int ACL[27],Map[70][70],ans[70];int main(){ int kase = 0; while(cin >> s && strcmp(s,"#")) { int len = strlen(s); int len1 = 0; memset(Map,0,sizeof(Map)); for(int i = 0; i < len; ++i) { if(s[i]==',') { memset(temp,0,sizeof(temp)); len1 = 0; } else if(s[i]=='+') { for(int j = i+1; s[j]!=',' && j < len; ++j) for(int k = 0; k < len1; ++k) Map[temp[k]-'A'][s[j]-'a'] = 1; } else if(s[i]=='-') { for(int j = i+1; s[j]!=',' && j < len; ++j) for(int k = 0; k < len1; ++k) Map[temp[k]-'A'][s[j]-'a'] = 0; } else if(s[i]=='=') { for(int k = 0; k < len1; ++k) { memset(Map[temp[k]-'A'],0,sizeof(Map[0])); for(int j = i+1; s[j]!=',' && j < len; ++j) Map[temp[k]-'A'][s[j]-'a'] = 1; } } else temp[len1++] = s[i]; } cout << ++kase << ':'; int No = 0,flag; for(int i = 0; i < 26; ++i) { flag = 1; for(int j = 0; j < 26; ++j) { if(Map[i][j]) flag = 0; } if(!flag) ans[No++] = i; } memset(temp,0,sizeof(temp)); len1 = 0; for(int i = 0; i < No; ++i) { int flag = 0; if(i != No-1) { for(int j = 0; j < 26; ++j) { if(Map[ans[i]][j] != Map[ans[i+1]][j]) flag = 1; } } temp[len1++] = 'A' + ans[i]; if(flag == 1 || i == No-1) { for(int j = 0; j < len1; ++j) cout << temp[j]; memset(temp,0,sizeof(temp)); len1 = 0; for(int j = 0; j < 26; ++j) if(Map[ans[i]][j]) cout << (char)(j+'a'); } } cout << endl; memset(s,0,sizeof(s)); } return 0;}
0 0
- HDU2723 Electronic Document Security【字符串】【水题】
- hdu 2723 Electronic Document Security
- POJ 3654 & ZOJ 2936 & HDU 2723 Electronic Document Security(模拟)
- HDU——2723Electronic Document Security(STL map嵌套set做法)
- 电子安全机制(electronic security mechanisms)
- Time-stamp is an critical part for electronic document
- cyberunited document security
- Pro EDI in BizTalk Server 2006 R2: Electronic Document Interchange Solutions
- ELECTRONIC COMPUTERS
- electronic-wechat
- Electronic commerce
- 将字符串转为document
- Issues in Electronic Commerce
- PaymentGateway4ProStores(二) Electronic Checks
- EDI (Electronic Data Interchange)
- Electronic Communication Network - ECN
- fedora electronic-wechat安装
- XML字符串与XML Document 相互转换
- 第五周项目一体验常成员函数
- 第五周 课后实践--阅读程序(2)
- 第五周项目一之体验常成员函数
- LinkedList的基本用法
- 第五周阅读程序3:对象指针小结
- HDU2723 Electronic Document Security【字符串】【水题】
- jsp编译后的文件位置(Eclipse和tomcat)
- 黑马程序员——面向对象
- web报表工具FineReport常用函数的用法总结(报表函数)
- 第五周 课后实践:项目二——对象作为数据成员
- asd
- zxc
- 第五周 课后实践--阅读程序(3,4,5,6)
- EMV技术学习和研究-脱机数据认证之SDA