算法竞赛入门经典(第2版)例题5-5 集合栈计算机 (The SetStack Computer UVa 12096)

这道例题书上的代码不全,我来补齐。

这章出现了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_intersection
using namespace std;//将标准名称空间std导入默认名称空间

typedef set<int> Set;
map<Set,int> IDcache; //把集合映射成ID
vector<Set> Setcache; //根据ID取集合

//查找给定集合x的ID。如果找不到,分配一个新ID
int 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"
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值