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序列即为答案。

#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;
}

最新文章

  1. PHP入门【一】$_SERVER
  2. 开发错误记录11:git报错 fatal:open /dev/null or dup failed: No such file or directory
  3. python编码
  4. JavaScript学习小结(一)——JavaScript入门基础
  5. 【Linux】Shell脚本编程(二)
  6. 第二百四十七天 how can I 坚持
  7. composer 常用命令
  8. jquery中修改一个元素的值或内容
  9. PHP学习笔记,自己动手写个MVC的框架
  10. Andrew Ng机器学习课程笔记--汇总
  11. java课设-计算数学表达式的程序,201521123050,51 团队
  12. 还在用AIDL吗?试试EasyMessenger吧
  13. github仓库的初步使用
  14. Jenkins 改成中文语言显示
  15. pgsql 常用命令
  16. vscode 的 vue模板
  17. (转)ThreadLocal-面试必问深度解析
  18. centos 磁盘清理 /dev/vda1系统盘满了
  19. 【LeetCode】49. Anagrams (2 solutions)
  20. gerrit上sshkey设置问题

热门文章

  1. 第15.6节 PyQt5安装与配置
  2. 常见的HTML元素及常见检查点
  3. LeetCode初级算法之数组:217 存在重复元素
  4. MySQL函数与存储过程
  5. MySQL事务提交流程
  6. 00-JAVA语法基础
  7. Salesforce LWC学习(二十九) getRecordNotifyChange(LDS拓展增强篇)
  8. react第十二单元(react路由-使用react-router-dom-认识相关的组件以及组件属性)
  9. Nessus&lt;强大的漏扫工具&gt;
  10. Vue必须必须要注意的几个细节