UVA 127 “Accordian“ Patience(算法竞赛入门经典,模拟,stl)

算法竞赛入门经典179页,模拟,stl
题目意思:模拟题,关键理解题目意思和样例
有 52 张扑克牌,一开始,全部排列成一行,每张牌看做是一堆牌。每次从左到右扫描, 假设当前扫描到第 x 堆牌(假设这堆牌的最上面是 x),
x 牌如果 和 x 前面第 1 张 或者第 3 张 牌匹配的话,就把第 x 堆牌最上面的那一张牌,放到与之匹配的那张牌所在堆的最上面。
优先选择最左边的牌。 如果这张牌的 左边 第1 和第3 都与之匹配,那么优先 放在第 3 个的位置。

本题要点:
1、 每一堆牌,用 stack 来存,合适不过了。
再用 vector 来存 各个栈。 vector<stack > pile;
2、后面就是模拟了, 当某个栈为空之后,这个栈需要删除,调用 vector 的erase 函数即可。
3、输出注意 单数复数问题,pile 和 piles

#include <cstdio>
#include <cstring>
#include <iostream>
#include <string>
#include <sstream>
#include <vector>
#include <stack>
using namespace std;
const int MaxN = 53;
int n;

struct node
{
   
	string val;
	int cnt;
};

vector<stack<node> > pile;

void handle_line(const string& line)
{
   
	string str;
	node tmp;
	stringstream ss(line);
	while(ss >> str)
	{
   
		tmp.val = str, tmp.cnt = 1;
		stack<node> s;
		
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值