第三題:
一個隊列,先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