Advertisement
Guest User

Untitled

a guest
May 21st, 2019
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.23 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4.  
  5. #define GROUP 10
  6.  
  7. int data[GROUP * GROUP];
  8.  
  9. void p() {
  10.     for (size_t i = 0; i < GROUP * GROUP; i++) {
  11.         if (i % GROUP == 0)
  12.             std::cout << "[ ";
  13.         printf("%03d ", data[i]);
  14.         if ((i + 1) % GROUP == 0)
  15.             std::cout << "] ";
  16.     }
  17.     std::cout << std::endl;
  18. }
  19.  
  20. int main()
  21. {
  22.     for(int i = 1;i < GROUP * GROUP + 1;i++) {
  23.         data[i-1] = i;  // populate data
  24.     }
  25.     int tmp, beg;
  26.     for (size_t rotation = 0;rotation < GROUP;rotation++) {    // 3 rotation
  27.         beg = GROUP;
  28.         p();
  29.         for(size_t i = 0; i < GROUP * GROUP - GROUP; i++) {    // last group should not swap
  30.             for(size_t j = beg;j < GROUP * GROUP;j++) { // swap iterate
  31.                 // swap
  32.                 tmp = data[i];
  33.                 data[i] = data[j];
  34.                 data[j] = tmp;
  35.                 p();
  36.                 // swap back
  37.                 data[j] = data[i];
  38.                 data[i] = tmp;
  39.             }
  40.             if (i != 0 && (i + 1) % GROUP == 0)
  41.                 beg += GROUP;   // skip itself
  42.         }
  43.         std::rotate(data, data + 1, data + GROUP * GROUP);  // left rotation
  44.     }
  45.     return 0;
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement