zoukankan      html  css  js  c++  java
  • 2017 网易有道研发内推笔试编程题 8.17

    15个选择题,每个2分,3个程序题,每个30.

    分析题目可以发现原始序列和之后的序列有一个对应关系。 比如队列的第二个数是第一个被输出的,所以输出是 1 2 ... n的话,对应的第二个数就是1 依次内推。我们可以从之后的序列出发进行同样的操作然后做个对应关系的映射还原回原始的序列

     1 #include "iostream"
     2 #include "queue"
     3 #define N 100005
     4 
     5 using namespace std;
     6 
     7 int n, a[N], b[N];
     8 
     9 int main() {
    10     int t;
    11     cin >> t;
    12 
    13     while (t--) {
    14         cin >> n;
    15         queue<int> q;
    16         for (int i = 1; i <= n; i++)
    17             q.push(i);
    18 
    19         int cnt = 0;
    20 
    21         while (!q.empty()) {
    22             int x = q.front();
    23             q.pop();
    24             q.push(x);
    25             x = q.front();
    26             a[++cnt] = x;
    27             q.pop();
    28         }
    29 
    30         for (int i = 1; i <= n; i++)
    31             b[a[i]] = i;
    32 
    33         for (int i = 1; i < n; i++)
    34             cout << b[i] << " ";
    35         cout << b[n];
    36         cout << endl;
    37     }
    38     return 0;
    39 }

    再开一个数组,模拟下,暴力就过了:

     1 #include "iostream"
     2 #define MAX 201
     3 typedef long long LL;
     4 
     5 using namespace std;
     6 
     7 int n, k;
     8 LL a[MAX], b[MAX];
     9 void solve(LL *a)
    10 {
    11     for (int i = 1; i <= 2*n; i++)
    12     {
    13         if (i <= n)
    14         {
    15                 b[2 * i - 1] = a[i];
    16         }
    17         else
    18                 b[2 * (i - n)] = a[i];    
    19     }
    20     for (int i = 1; i <= 2 * n; i++)
    21     {
    22         a[i]=b[i];
    23     }
    24 }
    25 
    26 int main()
    27 {
    28     int t;
    29 
    30     cin >> t;
    31     while (t--)
    32     {
    33         cin >> n >> k;
    34         for (int i = 1; i <= 2 * n; i++)
    35             cin >> a[i];
    36 
    37         while (k)
    38         {
    39             solve(a);
    40             k--;
    41         }
    42 
    43         for (int i = 1; i < 2 * n; i++)
    44         {
    45             cout << a[i] << " ";
    46         }cout<<a[2*n];
    47         cout << endl;
    48     }    
    49 }

  • 相关阅读:
    Angular语法(三)——数据绑定
    Angular语法(二)——模板语法
    Angular语法(一)——展示数据
    Angular常用指令
    windows下启动redis
    WPF实现弹幕
    微信获得用户信息
    拉普拉斯变换
    Convolutional Neural Networks on Graphs with Fast Localized Spectral Filtering
    Python之并行
  • 原文地址:https://www.cnblogs.com/SeekHit/p/5781971.html
Copyright © 2011-2022 走看看