问题标题: 酷町堂:5127 数组变换

0
0
已解决
张恩泽
张恩泽
高级天翼
高级天翼

5127   数组变换经验值:0

题目描述 Description

输入一个数组,下标从1开始,总长度2*n,把前半部分放入1 3 5的位置上…后半部分放到2 4 6…的位置上,进行两次这样的操作,输出交换后的序列。

输入描述 Input Description

输入2行
第1行输入一个正整数n
第2行输入2*n个正整数,数字之间用空格隔开

输出描述 Output Description

输出一行,输出经过2次操作之后的序列,数字之间用空格隔开;

样例输入 Sample Input

4 1 2 3 4 5 6 7 8

样例输出 Sample Output

1 3 5 7 2 4 6 8

数据范围及提示 Data Size & Hint

n<=50,
数组里的每个元素的值不超过1000

 

附上样例都没过的代码:

//CODE
//#include <bits/stdc++.h>
#include <iostream>
#include <cstring>
#define N 205
using namespace std;
int n, a [ N ], m = 2, b [ N ];
int main() {
    cin >> n;
    for (int i = 1; i <= 2 * n; i ++) {
        cin >> a [ i ];
    }
    for (int j = 1; j <= 2; j ++) {
        for (int  i = 1; i <= 2 * n; i ++) {
            if (i <= n) {
                b [ 2 * (n - i) - 1 ] = a [ i ];
            }
            else {
                b [ 2 * (i - n) - 1 ] = a [ i ];
            }
        }
        memcpy (a, b, sizeof (b));
    }
    for (int i = 1; i <= 2 * n; i ++) {
        cout << a [ i ] << ' ';
    }
    return 0;//好习惯!
}

这题我是按照1107换座位这题的做法写的,为什么不对啊!!

求各位大佬解答!

最好有思路和核心代码


0
已采纳
康曦
康曦
中级光能
中级光能
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<iomanip>
#include<string>
using namespace std;
//bool f[501];
int main(){

    int n,a[101],b[101],m=2;
    cin>>n;
    for(int i=1;i<=2*n;i++){
        cin>>a[i];
    }
    while(m--){
        for(int i=1;i<=n;i++){
            b[i*2-1]=a[i];
        }
        for(int i=n+1;i<=2*n;i++){
            b[2*(i-n)]=a[i];
        }
        for(int i=1;i<=2*n;i++){
            a[i]=b[i];
        }
    }
    for(int i=1;i<=2*n;i++){
        cout<<b[i]<<" ";
    }

}

 

我要回答