8 solutions
-
0
主要不会就上网查资料,多写几遍,就应该懂了
#include <cstdio> #include <cstring> #include <queue> #include <deque> #include <algorithm> using namespace std; const int N=1e6+7; int main() { deque<int>q;//创建一个双向队列 while(!q.empty())//将这个双向队列清空 q.pop_front(); int n,a,i,m[N]= {0}; scanf("%d",&n); for(i=1; i<=n; i++) { char s[10]; scanf(" %s",s); if(!strcmp(s,"LIN"))//将输入的字符串与“LIN”进行匹配,成功就进行下列操作 { scanf("%d",&a); q.push_front(a);//将输入的数从左边放入,也就是从头部放入 } else if(!strcmp(s,"RIN"))//与上面类似 { scanf("%d",&a); q.push_back(a);//从右边放入,也就是从尾部放入 } else if(!strcmp(s,"LOUT")) { if(!q.empty()) q.pop_front();//从左边(头部)删除 else m[i]++;//记录位置 } else if(!strcmp(s,"ROUT")) { if(q.empty()) m[i]++; else q.pop_back();//从右边(尾部)删除 } } printf("%d",q.front()); //输出队列中的数 q.pop_front();//同时删除 while(!q.empty())//当队列不为空时继续输出然后删除直到队列中为空 { printf(" %d",q.front()); q.pop_front(); } printf("\n"); for(i=1; i<=n; i++)//输出不合法的操作 if(m[i]) printf("%d ERROR\n",i); return 0; }
Information
- ID
- 1125
- Time
- 1000ms
- Memory
- 128MiB
- Difficulty
- 6
- Tags
- # Submissions
- 136
- Accepted
- 43
- Uploaded By