码迷,mamicode.com
首页 > 其他好文 > 详细

[编程题] 操作序列 网易2018

时间:2017-09-24 14:29:51      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:c++   编程   nbsp   奇数   pre   space   array   reverse   输入   

小易有一个长度为n的整数序列,a_1,...,a_n。然后考虑在一个空序列b上进行n次以下操作:
1、将a_i放入b序列的末尾
2、逆置b序列
小易需要你计算输出操作n次之后的b序列。 

输入描述:
输入包括两行,第一行包括一个整数n(2 ≤ n ≤ 2*10^5),即序列的长度。
第二行包括n个整数a_i(1 ≤ a_i ≤ 10^9),即序列a中的每个整数,以空格分割。



输出描述:
在一行中输出操作n次之后的b序列,以空格分割,行末无空格。

 

输入例子1:
4
1 2 3 4

 

输出例子1:
4 2 1 3


先上暴力解法,测试超时。
#include<iostream>
using namespace std;
int ReverseArray(int arr[], int n)
{
    int temp;
    int i;
    for (i=0;i<n/2;i++) {
        temp     = arr[i];
        arr[i]   = arr[n-1-i];
        arr[n-1-i] = temp;
    }
    return 0;
}
int main()
{

    int n;
    
    cin>>n;
    int* a = new int[n];
    int* b = new int[n];
    for(int i=0;i<n;i++)
    {
        cin>>a[i];
    }
    
    for(int i=0;i<n;i++)
    {
        b[i]=a[i];
        ReverseArray(b,i+1);
    }
    
    for(int i=0;i<n-1;i++)
    {
         cout<<b[i]<<" ";   
    }
    cout<<b[n-1];
}

实验发现:

个数是奇数的时候:奇数放在左边,偶数放在右边 
个数是偶数的时候:偶数放在左边,奇数放在右边

#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e5;

int main(){
    int n;
    cin>>n;
    int a[maxn];
    for(int i = 1;i<=n;i++){
        cin>>a[i];
    }
    if(n % 2) {
        for(int i = n; i >= 1; i -= 2) cout<<a[i]<<" ";
        for(int i = 2; i <= n; i += 2) 
           i == n - 1 ? cout<<a[i]: cout<<a[i]<<" ";
    } else {
        for(int i = n; i >= 1; i -= 2) cout<<a[i]<<" ";
        for(int i = 1; i <= n; i += 2)
           i == n - 1 ? cout<<a[i]: cout<<a[i]<<" ";
    }
    cout<<endl;
    return 0;
}

 

[编程题] 操作序列 网易2018

标签:c++   编程   nbsp   奇数   pre   space   array   reverse   输入   

原文地址:http://www.cnblogs.com/zdy1996/p/7587026.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!