• 蓝桥杯—盾神与条状项链(C++实现)


    思路:

      直接使用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 )函数即可实现。

    代码如下:

     1 #include<list>
     2 #include<string>
     3 #include <iostream>
     4 using namespace std;
     5 void operate(int num,int step){
     6     string str;int P,Q;//str为"DEL"或"ADD",P为颜色为P的珠子,Q是颜色为Q的珠子 
     7     list<int> *ls=new list<int>;
     8     for(int i=0;i<num;i++){    //输入链表值 
     9         cin>>Q;
    10         ls->push_back(Q);
    11     }
    12     for(int i=0;i<step;i++){
    13         cin>>str;
    14         if(str=="DEL"){//DEL P:表示把颜色为P的珠子去掉,如果它不在端点处,则需要把它旁边的两颗珠子连起来。例如某时刻项链状态为1 4 5 8,则执行DEL 4会变成1 5 8,执行DEL 1会变成4 5 8。
    15             cin>>Q; 
    16             ls->remove(Q);
    17         }else{//ADD P Q:表示在颜色为P的珠子前面加上一个颜色为Q的珠子。
    18             cin>>P>>Q;
    19             list<int>::iterator it=ls->begin();
    20             while(*it!=P){
    21                 it++;
    22             }
    23             ls->insert(it,Q);
    24         }
    25         
    26     }    
    27     list<int>::iterator it=ls->begin();
    28     cout<<ls->size()<<endl;
    29     while(it!=ls->end()){
    30         cout<<*it<<" ";
    31         it++;
    32     }
    33     delete ls;
    34 } 
    35 
    36 int main(){//测试代码 
    37     int num,step;
    38     cin>>num>>step;
    39     operate(num,step);
    40     return 0;
    41 }
  • 相关阅读:
    在数据集下建立FeatureClass
    打开对话框保存对话框
    C# 向数据库中添加数据
    OleDbCommand OleDbDataAdapter比较研究素材
    C# 判断数据库是否存在某张表
    AE常见问题、异常处理
    制作停靠窗体、悬浮窗Dockpanel
    11. Container With Most Water(js)
    10. Regular Expression Matching(js)
    9. Palindrome Number(js)
  • 原文地址:https://www.cnblogs.com/ytz1996/p/6287718.html
Copyright © 2020-2023  润新知