Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- void fill_tab(int *t, int N) {
- for(int i = 0; i < N; ++i) {
- t[i] = i+1;
- }
- }
- void write(int *t, int N) {
- for(int i =0 ; i < N; ++i) {
- cout << t[i] << " ";
- }
- cout << endl;
- }
- int count_next(int i, int n, int k) {
- return (i+k)%n;
- }
- void move(int *t, int n, int k, int index) {
- int start = index;
- int curr = t[index];
- int next_in = count_next(index, n,k);
- while(next_in != start) {
- swap(curr, t[next_in]);
- index = next_in;
- next_in = count_next(index, n, k);
- }
- swap(curr, t[next_in]);
- }
- void move(int *t, int n, int k) {
- if(k==0) return;
- int iter = (n%k == 0)? k : 1;
- for(int i = 0; i < iter; ++i) {
- move(t,n,k,i);
- }
- }
- int main() {
- ios_base::sync_with_stdio(false);
- const int N = 21;
- int t[N];
- fill_tab(t,N);
- write(t,N);
- move(t,N,0);
- write(t,N);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement