Advertisement
myloyo

сортировка по побочной диагонали

Jun 6th, 2023 (edited)
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.00 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <iomanip>
  4. #include <string>
  5. #include <algorithm>
  6. #include <vector>
  7.  
  8. using namespace std;
  9. ifstream in("input.txt");
  10. ofstream out("output.txt");
  11.  
  12. void sort_puzz(int* y, int n) {
  13.     int temp;
  14.     int i, j;
  15.     for (i = 0; i < n - 1; i++) {
  16.         for (j = n - 1; j > i; j--) {
  17.             if (y[j] < y[j - 1]) {
  18.                 temp = y[j];
  19.                 y[j] = y[j - 1];
  20.                 y[j - 1] = temp;
  21.             }
  22.         }
  23.     }
  24. }
  25.  
  26. int main() {
  27.     int n;
  28.     cin >> n;
  29.     int** a = new int* [n];
  30.     for (int i = 0; i < n; i++) {
  31.         a[i] = new int[n];
  32.     }
  33.     for (int i = 0; i < n; i++) {
  34.         for (int j = 0; j < n; j++) {
  35.             cin >> a[i][j];
  36.         }
  37.     }
  38.  
  39.     int* t = new int[n];
  40.     int c = 1;
  41.     int i = 0;
  42.     int j = n-2;
  43.     int kk = 0;
  44.     while (c <= n-2) {
  45.         int p = j;
  46.         while (j > -1 && i < n-1) {
  47.             t[i] = a[i][j];
  48.             i++; j--;
  49.             kk++;
  50.         }
  51.         sort_puzz(t, kk);
  52.  
  53.         i = 0;
  54.         j = p;
  55.         while (j >-1 && i < n-1) {
  56.             a[i][j] = t[i];
  57.             i++; j--;
  58.         }
  59.         for (int k = 0; k < kk; k++) {
  60.             t[k] = 0;
  61.         }
  62.         i = 0;
  63.         j= p-1;
  64.         kk = 0;
  65.         c++;
  66.     }
  67.  
  68.     int u = 0;
  69.     int k = n-1;
  70.     int m = n - 1;
  71.     int g = 0;
  72.     while (u <= n-2) {
  73.         int p = m;
  74.         while (m < n) {
  75.             t[g] = a[k][m];
  76.             k--; m++;
  77.             g++;
  78.         }
  79.         sort_puzz(t, g);
  80.         k = n - 1;
  81.         m = p;
  82.         g = 0;
  83.         while (m < n) {
  84.             a[k][m] = t[g];
  85.             k--; m++;
  86.             g++;
  87.         }
  88.         for (int l = 0; l < g; l++) {
  89.             t[l] = 0;
  90.         }
  91.         g = 0;
  92.         k = n - 1;
  93.         m = p - 1;
  94.         u++;
  95.     }
  96.  
  97.     for (int i = 0; i < n; i++) {
  98.         for (int j = 0; j < n; j++) {
  99.             cout << a[i][j] << " ";
  100.         }
  101.         cout << endl;
  102.     }
  103. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement