概述
挺简单的一道模拟题,用来做STL或数据结构的练习题还是不错的。注意的是这次用到了不止一个队列而是1000个,还有就是同一个队的要编号。
附上AC代码 time 30ms
#include<cstdio>
#include<map>
#include<queue>
using namespace std;
const int maxn=1000+10;
char order[10];
int main()
{
int num,ans,test=1;
while(scanf("%d",&num)==1 && num)
{
int k;
ans=0;
map<int,int> m;
queue<int> a;
queue<int> b[maxn];
printf("Scenario #%dn",test++);
for(int i=0;i<num;i++)
{
scanf("%d",&k);
while(k--) { int x; scanf("%d",&x); m[x]=ans; }
ans++;
}
while(scanf("%s",order)==1 && order[0]!='S')
{
getchar();
if(order[0]=='E')
{
int x;
scanf("%d",&x);
int pos=m[x];
if(b[pos].empty()) a.push(pos);
b[pos].push(x);
}
else if(order[0]=='D')
{
int pos=a.front();
printf("%dn",b[pos].front()); b[pos].pop();
if(b[pos].empty()) a.pop();
}
}
printf("n");
}
return 0;
}
以下是错误代码,亲爱的小伙伴们,你们能找到错误吗,博主我可是找到了呢
#include<cstdio>
#include<map>
#include<queue>
using namespace std;
const int maxn=1000+10;
char order[10];
map<int,int> m;
queue<int> a;
queue<int> b[maxn];
int main()
{
int num,ans,test=1;
while(scanf("%d",&num)==1 && num)
{
int k;
ans=0;
printf("Scenario #%dn",test++);
for(int i=0;i<num;i++)
{
scanf("%d",&k);
while(k--) { int x; scanf("%d",&x); m[x]=ans; }
ans++;
}
while(scanf("%s",order)==1 && order[0]!='S')
{
getchar();
if(order[0]=='E')
{
int x;
scanf("%d",&x);
int pos=m[x];
if(b[pos].empty()) a.push(pos);
b[pos].push(x);
}
else if(order[0]=='D')
{
int pos=a.front();
printf("%dn",b[pos].front()); b[pos].pop();
if(b[pos].empty()) a.pop();
}
}
printf("n");
}
return 0;
}
全局变量的使用造成了初始化问题,但在主函数里在定义变量就可以很好地解决这一问题
最后
以上就是奋斗钢笔为你收集整理的UVA540解题报告的全部内容,希望文章能够帮你解决UVA540解题报告所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复