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 }

  • 相关阅读:
    js push(),pop(),shift(),unshift()
    bootstrap fileinput 上传文件
    关于dataTable 生成JSON 树
    postgresql+ C#+ DHTMLX 学习汇总
    java_时间戳与Date_相互转化的实现代码
    SparkML之推荐算法ALS
    ALS部署Spark集群入坑记
    test
    迁移数据库mysql
    JVM运行机制
  • 原文地址:https://www.cnblogs.com/SeekHit/p/5781971.html
Copyright © 2011-2022 走看看