算法竞赛入门经典(第2版)例题5-5 集合栈计算机 (The SetStack Computer UVa 12096)
来源:互联网 发布:网络兼职论坛 编辑:程序博客网 时间:2024/06/05 07:20
这道例题书上的代码不全,我来补齐。
这章出现了n多新内容,紫书上一掠而过,我是不是该去读一读C++ primer plus?
//#define LOCAL#include<set> //使用set容器#include<iostream>//使用c++输入输出流#include<map>//使用map映射#include<vector>//使用vector不定长数组#include<stack>//使用stack栈#include<algorithm>//使用算法set_union set_intersectionusing namespace std;//将标准名称空间std导入默认名称空间typedef set<int> Set;map<Set,int> IDcache; //把集合映射成IDvector<Set> Setcache; //根据ID取集合//查找给定集合x的ID。如果找不到,分配一个新IDint ID (Set x) { if (IDcache.count(x)) return IDcache[x]; Setcache.push_back(x); //添加新集合 return IDcache[x] = Setcache.size() - 1;}#define ALL(x) x.begin(),x.end() //定义ALL宏,表示“所有的内容”#define INS(x) inserter(x,x.begin())//定义INS宏,表示“插入迭代器”int main() { #ifdef LOCAL freopen("lt5-5.in", "r", stdin); freopen("lt5-5.out", "w", stdout); #endif int t;//声明整型变量t,测试样例的数量 cin>>t;//读入测试样例数量 while(t--) { stack<int> s; //定义栈s int n;//声明整型变量n,样例中包含的操作数量 cin >> n;//读入样例中包含的操作数量 for(int i = 0; i < n; i++) { //依次执行操作,并输出操作后栈顶集合的大小 string op; //声明字符串变量op cin >> op; //输入流赋值op if (op[0] == 'P') s.push(ID(Set())); //如果指令为PUSH,将空集压入栈 else if (op[0] == 'D') s.push(s.top()); //如果指令为DUP,将栈顶元素压入栈 else { Set x1 = Setcache[s.top()]; s.pop(); //将栈顶元素赋值给集合变量x1,并弹出栈顶元素 Set x2 = Setcache[s.top()]; s.pop(); //将栈顶元素赋值给集合变量x2,并弹出栈顶元素 Set x; //声明集合变量x,用于存储指令操作结果 if (op[0] == 'U') set_union (ALL(x1), ALL(x2), INS(x)); //如果指令为UNION,使用set_union,把x1,x2的并集赋值给x if (op[0] == 'I') set_intersection (ALL(x1), ALL(x2), INS(x)); //如果指令为INTERSECT,使用set_intersection,把x1,x2的交集赋值给x if (op[0] == 'A') { x = x2; x.insert(ID(x1)); } //如果指令为ADD,首先把x2赋值给x,然后使用set中的insert把x1插入x s.push(ID(x)); //结果入栈 } cout << Setcache[s.top()].size() << endl; //输出栈顶集合的元素数量后换行 } cout << "***" << endl;//样例操作结束后输出“***”并换行 } return 0;}
0 0
- 算法竞赛入门经典(第2版)例题5-5 集合栈计算机 (The SetStack Computer UVa 12096)
- 《算法竞赛入门经典2ndEdition 》例题5-5 集合栈计算机(The SetStack Computer, Uva12096)
- 例题5-5 UVA 12096 The SetStack Computer集合栈计算机
- UVa #12096 The SetStack Computer (例题5-5)
- 集合栈计算机(The SetStack Computer)
- The SetStack Computer UVA12096(集合栈计算机)
- 算法竞赛入门经典(第2版)例题4-6 师兄帮帮忙 (A Typical Homework UVa 12412)
- UVA 12096 The SetStack Computer STL集合集合操作
- uva 12096 The SetStack Computer
- UVA - 12096 The SetStack Computer
- UVa 12096 - The SetStack Computer
- UVa 12096 The SetStack Computer
- Uva - 12096 - The SetStack Computer
- UVa-12096 The SetStack Computer
- UVA 12096 The SetStack Computer
- UVA 12096 - The SetStack Computer
- UVa 12096 - The SetStack Computer
- UVA-12096 The SetStack Computer
- 基于iBeacon技术智慧社区医院解决方案
- 运维知识总结(网络技术和操作系统)
- Xcode6中创建Empty Application
- 华师ACM新生赛1002
- android service 详解
- 算法竞赛入门经典(第2版)例题5-5 集合栈计算机 (The SetStack Computer UVa 12096)
- 第十五周项目OJ指针当形参,变量交换
- 第十五周项目2-阅读程序(2)
- TestFlight——完美的iOS app测试方案
- 第十五周项目二 阅读程序(1)
- apache 配置跳转服务
- 计算鼠标移动时旋转的夹角
- 第15周项目3-在OJ上玩指针(4)
- centos安装网卡驱动