题目详情:给出一个含有n个元素的队列,其内容为1到n的无序整数,按照给定算法输出该队列,使得该队列依次输出1,2,3,…,n-1,n。
给定算法为:

void outque(queue<int> Q) {while (!Q.empty()) {int x = Q.front();Q.pop();Q.push(x);cout << Q.front() << " ";Q.pop();}
}

即每次将队首元素放到队尾,同时读取当前队首,并弹出丢弃。

现在要求输入T组整数,每一个整数n,输出对应的n的原本队列。如:
输入:
2
3 10
输出:
2 1 3
8 1 6 2 10 3 7 4 9 5

观察之后,发现其排列为每次空一个空格之后,插入。如n = 10时:
0 1 0 2 0 3 0 4 0 5
0 1 6 2 0 3 7 4 0 5
8 1 6 2 0 3 7 4 9 5
8 1 6 2 10 3 7 4 9 5

代码如下:

#include <vector>
#include <iostream>
using namespace std;int main()
{int T;int n;cin >> T;  while (T--){cin >> n;vector<int> res(n+1, 0);int i;int index1 = 1;int index2 = n;for (i = 1; i <= n; ++i){if(i+i<=n)res[i*2] = i;else{if (n%2 == 0){int j = index1;int zero = 0;for (j; ; ){                 if (res[j] == 0 && zero < 1){zero++;                            if (i == n){res[j] = n;                               break;}j = (j == n-1 ? n : (j+1)%n);}else if (res[j] == 0 && zero == 1){res[j] = i;                            index1 = (j == n-1 ? n : (j+1)%n);break;}else{j = (j == n-1 ? n : (j+1)%n);}}}else{int j = index2;int zero = 0;for (j; ; ){                 if (res[j] == 0 && zero < 1){zero++;                               if (i == n){res[j] = n;                               break;}j = (j == n-1 ? n : (j+1)%n);}else if (res[j] == 0 && zero == 1){res[j] = i;index2 = (j == n-1 ? n : (j+1)%n);                        break;}else{j = (j == n-1 ? n : (j+1)%n);}}}}}for (int i = 1; i <n; ++i){cout << res[i] << ' ';}cout <<res[n] << endl;}return 0;
}

今天总共三道编程题,估计都不难,我就做了这么一道,还没AC,丢人!

细节:

细节一:循环队列处理,j = (j == n-1 ? n : (j+1)%n);,不能单纯地j = (j+1)%n;,因为如果刚好处理到n位,则循环进入到0,而题目没有将0考虑在内。
细节二:如果按照n的奇偶性分别处理,那么在进入第二轮的时候的起点位置不一样。其实应该大可不必,懒得改了。

算了,弱渣就这样吧。
估计这不是好的算法思路,只是将答案解出来了。

毕业和工作,前途堪忧。

网易有道编程题:恢复队列相关推荐

  1. 小学生计算机编程题,真题|小学组倒数第二道编程题,做不出来罚你点赞三遍!...

    原标题:真题|小学组倒数第二道编程题,做不出来罚你点赞三遍! 十年前,当我们还是小学生的时候,碰到电脑你们都会干什么? 是熟练地在网址栏输入www.4399.com,然后一个接一个的点开网页小游戏,还 ...

  2. 51信用卡两道编程题

    51信用卡两道编程题 1>输入一串字符,判断第二个字符串的字符是否都存在于第一个字符串,返回true,否则false,两个串中间有;号连接 如输入: ABCNB51;51NB 输出:true 解 ...

  3. 全国计算机二级编程题100道,计算机二级C语言100道编程题

    国家计算机二级100道编程题 #include #include int fun(int score[], int m, int below[]) { int i,k=0; float av=0.0; ...

  4. 滴滴2016.09.06校招 在线笔试 - 2道编程题

    滴滴2016.09.06校招 在线笔试 - 2道编程题 1.连续子数组的最大和 题目描述 一个数组有N个元素,求连续子数组的最大和.例如:[-1,2,1],和最大的连续子数组为[2,1],其和为3. ...

  5. 1000道Python题库系列分享十二(9道编程题)

    上期题目连接:1000道Python题库系列分享十一(9道) 上期题目答案: 本期题目: ---------董付国老师Python系列教材-------- 1)<Python程序设计(第2版)& ...

  6. 1000道Python题库系列分享21(11道编程题:内置函数专项练习)

    本期题目,答案在文末: 温馨提示 进入公众号,通过菜单"最新资源"==>"历史文章"可以快速查看分专题的文章列表,通过"最新资源"== ...

  7. 网易校招基础编程题——计算炮击次数

    据说是校招的一道编程题,解题思路很简单,只需要一点基础的数学知识,但是需要注意测试样例有多组. 只需要简单的计算欧氏距离,与炮台射程进行比较即可. 代码实现如下: #include <iostr ...

  8. java基础50道编程题

    50道JAVA基础编程练习题 [程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少? 程序分析 ...

  9. Java笔试题库之编程题库 总共30道编程题,掌握了就可以应付中级以内Java面试题

    1.编程实现:二分搜索算法 解答: public class SearchTest { /** 被搜索数据的大小 */ private static final int size = 5000000; ...

最新文章

  1. 超重磅 | 神策数据“两云一平台”上线,拥抱数字化经营
  2. 热门解读:大促的活动设计及效果评估的优化
  3. windows winrar 指令_【转】winrar命令行详解
  4. 显示外部页面_前端设计-响应式页面开发基础
  5. 蓝牙小电池图标_方寸间、掌握中,omthing小方盒开箱测评
  6. php中解析数组,在PHP中解析多维数组
  7. jeecg自定义datagrid查询
  8. 基于element-ui,vue的html随机点名器
  9. LeetCode 1073. 负二进制数相加(负数进制)
  10. oracle 找不到程序,Oracle 找不到监听程序
  11. linux挂载iso镜像文件_Linux服务器如何识别移动硬盘?
  12. 战地5离线bot模式_战地系列、烂橘子平台下载更新慢咋办?我这里有两个亲测有有效的方式。...
  13. MyBatis使用Map
  14. silverlight4 开发必备
  15. c语言心算抢答系统,心算抢答系统2.doc
  16. yasm linux gcc,yasm安装出现问题
  17. 计算机怎样保存文件格式,word文档怎样保存为pdf格式
  18. 前端开发和html5,Web前端和HTML5前端相同吗 有区别吗
  19. GetPrivateProfileString函数之新手上路
  20. MariaDB 版本

热门文章

  1. 如何用手机访问电脑上的本地服务器?
  2. 手机访问电脑同一局域网下的地址
  3. 双目测距--3 双目标定
  4. 阿卡姆大酒店:德国烤猪肘
  5. 使用 winget 工具安装和管理应用程序
  6. 18个优秀的前端开源项目
  7. 描述计算机算法方法,算法及算法的描述方法
  8. 【调剂】安徽大学电子信息工程学院2022年硕士研究生招生预调剂公告
  9. 【图像分割】UNet 和 UNet++
  10. 站群工具包(10多款软件)