小明新学期有了新同桌,想和新同桌认识一下,就询问新同桌的QQ号,新同桌平时喜欢玩解密游戏,就给新同桌一串加密的数字,解密规则如下:首先将第一个数删除,紧接着将第二个数放到这串数的末尾,再将第三个数删除,将第四个数放到这串数的末尾,再将第五个数删除……直到剩下最后一个数,将最后一个数删除,按照刚才顺序,把删除的数连在一起就是正确的QQ号。
这串加密的数字是“1752251268”,先用笔算一下,偷偷告诉你,正确答案是:1521675822.
这个方法要用队列来实现比较轻松一点。
用整形变量head记录队列的队首(第一位),tail用来记录队列的队尾(最后一位)的下一个位置。
队列为空:队列和队尾重合
队首删除:head++;
新增一个数:q[tail] = x; tail++;
代码实现:
#include <iostream>
using namespace std;