前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2020安徽程序设计省赛 G序列游戏

2020安徽程序设计省赛 G序列游戏

作者头像
程序员小涛
发布2021-12-06 13:14:33
2880
发布2021-12-06 13:14:33
举报
文章被收录于专栏:涛的程序人生

2020安徽程序设计省赛 G序列游戏

有一个序列w,初始为空。再给出一个长度为m 单调递增的序列a。你需要对序列w 作如下n 次操作: (1)操作0,在序列尾部添加数字0。 (2)操作1,在序列尾部添加数字1. (3) 操作-1,删除序列w 中,所有位于位置ai 的数(1<=i<=m)。比如a={1,3,5},就将w 中第1,3,5 个数删除。若ai>w 的当前长度,则该操作停止。输出n 次操作后的序列w。

解题思路:

该题根据题目描述,可以直接定义三个操作对应的函数处理用户输入即可。

具体解法:

首先从题目的条件入手,让用户输入两个整数n和m,然后输入m个整数作为序列a,后面有n行整数分别代表不同的操作。 使用STL向量容器存储w和a序列。0和1操作可直接使用库函数push_back进行序列值的添加,定义deleteSequence函数执行从序列w中删除a序列值对应位置的元素,在删除前进行合法性判断。执行完操作后的w序列即为答案。

代码语言:javascript
复制
#include <iostream>
#include <vector>

using namespace std;

void printSequence(const vector<int>& a)
{
    for(auto it : a)
    {
        cout << it;
    }
    cout << endl;
}

void deleteSequence(vector<int>& w, const vector<int>& a)
{
	bool flag = false;
    for(auto it : a)
    {
        if(it <= w.size())
        {
        	int n = it;
        	if(flag)
        	{
        		n--;
			}
            w.erase(w.begin() + (n - 1));
            flag = true;
        }
        else 
        {
        	flag = false;
		}
    }
}

int main()
{
    vector<int> w, a;
    int n, m, op, temp;
    cin >> n;
    cin >> m;
    for(int i = 0; i < m; i++)
    {
        cin >> temp;
        a.push_back(temp);
    }

    while(n > 0)
    {
        cin >> op;
        switch(op)
        {
            case 0:
                w.push_back(0);
                break;
            case 1:
                w.push_back(1);
                break;
            case -1:
                deleteSequence(w, a);
                break;
            default:
                cout << "输入有误,请重新输入(0, 1, -1)!" << endl;
                continue;
        }
        n--;
    }

    if(w.empty())
    {
        cout << "Poor stack!" << endl;
        return 0;
    }

    printSequence(w);

    return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/01/04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 2020安徽程序设计省赛 G序列游戏
    • 解题思路:
      • 具体解法:
      相关产品与服务
      容器服务
      腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档