Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <algorithm>
- #define GROUP 10
- int data[GROUP * GROUP];
- void p() {
- for (size_t i = 0; i < GROUP * GROUP; i++) {
- if (i % GROUP == 0)
- std::cout << "[ ";
- printf("%03d ", data[i]);
- if ((i + 1) % GROUP == 0)
- std::cout << "] ";
- }
- std::cout << std::endl;
- }
- int main()
- {
- for(int i = 1;i < GROUP * GROUP + 1;i++) {
- data[i-1] = i; // populate data
- }
- int tmp, beg;
- for (size_t rotation = 0;rotation < GROUP;rotation++) { // 3 rotation
- beg = GROUP;
- p();
- for(size_t i = 0; i < GROUP * GROUP - GROUP; i++) { // last group should not swap
- for(size_t j = beg;j < GROUP * GROUP;j++) { // swap iterate
- // swap
- tmp = data[i];
- data[i] = data[j];
- data[j] = tmp;
- p();
- // swap back
- data[j] = data[i];
- data[i] = tmp;
- }
- if (i != 0 && (i + 1) % GROUP == 0)
- beg += GROUP; // skip itself
- }
- std::rotate(data, data + 1, data + GROUP * GROUP); // left rotation
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement