蓝桥杯—盾神与条状项链(C++实现)
2024-10-18 09:18:40
思路:
直接使用STL的list容器。
分两种情况:
1.DEL Q。通过迭代器,找到Q的位置(看不懂迭代器的可以参考这篇文http://www.cnblogs.com/yc_sunniwell/archive/2010/06/25/1764934.html),然后直接调用void remove( const TYPE &val )函数即可。
2.ADD P Q。首先找出P所在的位置,通过迭代器实现,之后将Q插入到P之前,调用iterator insert( iterator pos, const TYPE &val )函数即可实现。
代码如下:
#include<list>
#include<string>
#include <iostream>
using namespace std;
void operate(int num,int step){
string str;int P,Q;//str为"DEL"或"ADD",P为颜色为P的珠子,Q是颜色为Q的珠子
list<int> *ls=new list<int>;
for(int i=;i<num;i++){ //输入链表值
cin>>Q;
ls->push_back(Q);
}
for(int i=;i<step;i++){
cin>>str;
if(str=="DEL"){//DEL P:表示把颜色为P的珠子去掉,如果它不在端点处,则需要把它旁边的两颗珠子连起来。例如某时刻项链状态为1 4 5 8,则执行DEL 4会变成1 5 8,执行DEL 1会变成4 5 8。
cin>>Q;
ls->remove(Q);
}else{//ADD P Q:表示在颜色为P的珠子前面加上一个颜色为Q的珠子。
cin>>P>>Q;
list<int>::iterator it=ls->begin();
while(*it!=P){
it++;
}
ls->insert(it,Q);
} }
list<int>::iterator it=ls->begin();
cout<<ls->size()<<endl;
while(it!=ls->end()){
cout<<*it<<" ";
it++;
}
delete ls;
} int main(){//测试代码
int num,step;
cin>>num>>step;
operate(num,step);
return ;
}
最新文章
- Bash Shell的操作环境
- 妹味6:ajax与ajax封装
- Netfilter/iptables防火墙
- Android IOS WebRTC 音视频开发总结(五十)-- 技术服务如何定价?
- 《DDNS服务器的搭建和案例解决方法》
- Setup Project 安装项目
- Canvas实现文字粒子化,并且绕轴旋转(初号机)
- Linux经常使用的命令-权利管理命令-权利管理命令chmod
- Tips &; Tricks:Apache log4j简明教程(二)
- servlet与CGI的区别
- 【转】mysql-5..6.23-win64.zip安装及配置
- C++模板学习:函数模板、结构体模板、类模板
- C. Kyoya and Colored Balls(Codeforces Round #309 (Div. 2))
- Web运营手记
- SpringBoot开源项目(企业信息化基础平台)
- Spring.net的一些感悟
- 集群概念Cluster
- 996.icu 事件后
- 更精确的判断对象类型js方法
- vue-video-player的使用总结