博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj3078
阅读量:6212 次
发布时间:2019-06-21

本文共 1066 字,大约阅读时间需要 3 分钟。

题意:很难理解,是说一个队列,给出原始队列,并每次把原始队列中位置a的元素挪到b位置,先不考虑其余元素位置。进行了所有操作后,其余元素依次填入队列的空位,并保持前后顺序不变。问操作后的队列。题中说明每个元素只会被挪一次,而且每个要挪到的位置也只会出现一次。

分析:可以直接模拟。我们可以用两个数组,把第一个数组中的元素挪到第二个数组的指定位置,没有挪的依次填入第二个数组即可。

View Code
#include
<
iostream
>
#include
<
cstdio
>
#include
<
cstdlib
>
#include
<
cstring
>
using
namespace
std;
#define
maxn 25
#define
maxl 20
char
name[maxn][maxl];
int
n, m;
bool
vis[maxn];
int
ans[maxn];
int
main()
{
//
freopen("t.txt", "r", stdin);
int
t;
scanf(
"
%d
"
,
&
t);
while
(t
--
)
{
scanf(
"
%d%d
"
,
&
n,
&
m);
for
(
int
i
=
1
; i
<=
n; i
++
)
scanf(
"
%s
"
, name[i]);
memset(vis,
0
,
sizeof
(vis));
memset(ans,
-
1
,
sizeof
(ans));
for
(
int
i
=
0
; i
<
m; i
++
)
{
int
a, b;
scanf(
"
%d%d
"
,
&
a,
&
b);
vis[a]
=
true
;
ans[b]
=
a;
}
int
j
=
1
;
for
(
int
i
=
1
; i
<=
n; i
++
)
if
(ans[i]
==
-
1
)
{
while
(vis[j])
j
++
;
ans[i]
=
j;
vis[j]
=
true
;
}
printf(
"
%s
"
, name[ans[
1
]]);
for
(
int
i
=
2
; i
<=
n; i
++
)
printf(
"
%s
"
, name[ans[i]]);
printf(
"
\n
"
);
}
return
0
;
}

转载于:https://www.cnblogs.com/rainydays/archive/2011/07/01/2095925.html

你可能感兴趣的文章
asp.net代码中尖括号和百分号的含义 <转载>
查看>>
2-sat
查看>>
Jquery DataTable控制显示列,导出EXCEL
查看>>
实验证明:Objective-C++ 完美支持 ARC
查看>>
第八章 Libgdx输入处理(10)触摸屏
查看>>
【mysql】新方法修改数据库密码以及解决--ERROR 1045 (28000)的问题
查看>>
C# ListView控件使用简介
查看>>
当你的才华还不足以支撑起你的野心时,你就该静下心来学习
查看>>
包加载失败的解决办法
查看>>
100款编程在线工具|果断收藏!
查看>>
C语言简单实现链栈基本几个功能
查看>>
《面向模式的软件体系结构2-用于并发和网络化对象模式》读书笔记(15)--- 监视器对象...
查看>>
开通技术博客
查看>>
使用SecureCRT在Linux与Windows之间传输文件
查看>>
git获取远程仓库的方式
查看>>
atomic integer operations P176
查看>>
springboot之HelloWorld
查看>>
python全栈_003_Python3运算符
查看>>
新maven项目创建JSP出现小红叉报错 javax.servlet.http.HttpServlet not found
查看>>
微信小程序列表加载更多
查看>>