第三题:
一个队列,先pop一个头结点放在队尾,再pop一个头结点输出其值并丢弃。最后输出的序列为1,2,3,。。。n
问原始队列元素排列是什么
输入:n //n个数
输出:一个串
//
// main.cpp
// youdao3
//
// Created by zjl on 16/8/27.
// Copyright © 2016年 zjl. All rights reserved.
//
#include <iostream>
#include <vector>
using namespace std;
void solve(vector<int>& num, vector<bool>& isvalid, int n){
int sum = n, i = 0;
while(sum > 0){
while(isvalid[i%n] == true)
i++;
i++;
while(isvalid[i%n] == true)
i++;
if(isvalid[i%n] == false){
num[i%n] = n-sum+1;
isvalid[i%n] = true;
--sum;
}
}
}
int main(int argc, const char * argv[]) {
// insert code here...
int n = 6;
vector<int> num(n, 0);
vector<bool> isvalid(n,false);
solve(num, isvalid, n);
for(auto a: num)
cout<<a<<" ";
return 0;
}
样例:输入 5
输出:3 1 5 2 4
输入:6
输出:5 1 4 2 6 3