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); }
利用了逆序的特性。

浙公网安备 33010602011771号