福大数据结构与算法实验题 Who is behind(双端队列)

原创 2013年12月03日 13:23:49
★实验任务
开学了,有 N 个新生需要排成一列。这 N 个新生编号从 1 到 N,为了排队方便,按编号
从 1 到 N 顺序入队伍,起始队伍为空,每个人进队伍的选择有两种,一种是直接排在当前队
伍的最前面,一种是排在当前队伍最末端。现在想知道所有人都入队伍之后每人的后面是谁。 ★数据输入
输入第一行为一个正整数 N (2 < N < 10000), 表示有 N 个人,编号为 1 到 N。。
接下来 1 行,有 N 个整数,0 或者 1。第 i 个数表示第 i 个同学是排在当前队伍最前端
还是在最末端。(0 表示排在当前队伍最前端,1 表示排在当前队伍最末端)
★数据输出
输出 N 行每行一个整数。第 i 行的整数表示全部人都入队伍后第 i 个同学后面的同学的

编号,如果后面没人的同学则输出 -1。 输入示例 输出示例

input:

6
0
1
0
1
0

1

output:

2
4
1
6
3

-1

利用双端队列可以很轻松解决此题

#include<iostream>
#include<deque>
#include<algorithm>
using namespace std;
int main()
{
	int n,flag,i;
	deque<int> Q;
	deque<int>::iterator iter;
	while(cin>>n)
	{
		for(i=1;i<=n;i++)
		{
			cin>>flag;
			if(flag==0)  //一次将第i个同学插入到队首或者队尾
				Q.push_front(i);
			else Q.push_back(i);
		}
		for(i=1;i<=n;i++)
		{
			iter=find(Q.begin(),Q.end(),i);   //找到第i个同学的位置
			if((++iter)!=Q.end())   //下一个同学的位置
			cout<<*iter<<endl;    
			else cout<<-1;   //如果后面没有人了,则输出-1
		}

	}
	return 0;
}


Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

数据结构与算法实验题 4.2 Who is the strongest

数据结构与算法实验题 4.2 Who is the strongest ★实验任务 在神奇的魔法世界,召唤师召唤了一群的魁偶。这些魁偶排成一排,每个魁偶都有一个 战斗值。现在该召唤师有一个技能,该技能...

数据结构-用双端队列实现栈

  • 2010年12月25日 12:21
  • 2KB
  • 下载

数据结构与算法MOOC / 第三章 栈与队列 练习题 4:双端队列

4:双端队列 查看提交统计提问 总时间限制: 1000ms 内存限制: 65535kB 描述 定义一个双端队列,进队操作与普通队列一样,从队尾进入。出队操作既可以从队头,也...

【C/C++学院】0828-STL入门与简介/STL容器概念/容器迭代器仿函数算法STL概念例子/栈队列双端队列优先队列/数据结构堆的概念/红黑树容器

STL入门与简介 #include #include //容器 #include//数组 #include //算法 using namespace std; //实现一个类模板,专门实现打印的功...
  • waldmer
  • waldmer
  • 2015年12月02日 12:21
  • 1884

Java 数据结构之Deque(双端队列)

Deque接口是“double ended queue”的缩写(通常读作“deck”),即双端队列,支持在队列的两端插入和删除元素。大多数的实现对元素的数量没有限制,但这个接口既支持有容量限制的deq...

java数据结构之LinkedDeque(用链表实现的双端(即头尾两个哨兵节点)双向(node里两个指向)队列)

package com.jimmy.impl; import com.jimmy.QueueInterf; public class LinkedDeque implements...

数据结构——使用双端链表实现队列(java实现)

队列是这样一种数据结构:在队尾(rear)插入数据项,在队首(front)移除数据项,队列的进出顺序是先进入的先被移除(先进先出,FIFO);      Robert Lafore的书对队列的使用有...

c++ 数据结构 双端(循环)队列

双端队列:相比循环队列来说,既可以取队头元素,又可以取队尾元素;可以从队头出队,也可以从队头进队;可以从队尾进队,也可以从队尾出队。 所以本文用继承循环队列的方式来实现双端队列: 1.循环队列(Seq...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:福大数据结构与算法实验题 Who is behind(双端队列)
举报原因:
原因补充:

(最多只允许输入30个字)