408考研真题2010算法题

#include<iostream>
#include<vector>
using namespace std;
void reverse(int* a, int begin, int end) {
    for (int i = 0; i < ((end + begin) / 2); i++) {
        a[end - i] = a[begin + i] ^ a[end - i];
        a[begin+i] = a[begin + i] ^ a[end - i];
        a[end - i] = a[begin + i] ^ a[end - i];
    }
}
void print(int* a,int len) {
    for (int i = 0; i < len; i++) {
        cout << a[i] << "  ";
    }
    cout << endl;
}
int main() {
    int a[100];
    int length = 0;
    int temp;
    cin >> temp;
    while (temp < 100)
    {
        a[length++]=temp;
        cin >> temp;
    }
    cout << "请输入你向左循环的位数:"<<endl;
    int left;
    cin >> left;

    reverse(a, 0, left-1);
    reverse(a, left, length - 1);
    reverse(a, 0, length-1);
    print(a, length);
}

利用了逆序的特性。

posted @ 2022-07-13 15:12  喝喝酒  阅读(81)  评论(0)    收藏  举报