2017 网易有道内推

来源:互联网 发布:linux 如何tracert 编辑:程序博客网 时间:2024/05/30 04:34


第三题:

一个队列,先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

0 0
原创粉丝点击