C++ ARRAYS Сортировка

У меня есть массив размерности n*n,у меня есть идея чтобы отсортировать его так, чтобы на месте первой строки был первый столбик, на месте второй строки второй столбик и т.д. Как это можно реализовать?)

Пытался делать через фор + счётчик, но всё шло коту под хвост(

https://www.eolymp.com/ru/contests/29833/problems/347361


Ответы (1 шт):

Автор решения: Harry

Это называется транспонирование...

int a[n][n];
for(int i = 0; i < n; ++i)
for(int j = i+1; j < n; ++j)
{
    int tmp = a[i][j];
    a[i][j] = a[j][i];
    a[j][i] = tmp;
}

Примерно так. Это то, что вы хотели?

Update

В вашей задаче не нужны никакие сортировки/транспонирования. Даже матрица не нужна...

int main(int argc, char * argv[])
{
    int x, n;
    cin >> x >> n;
    vector<bool> v(n,false);
    for(int y, i = 0; i < n*n; ++i)
    {
        cin >> y;
        if (x == y) v[i%n] = true;
    }
    for(int i = 0; i < n; ++i)
        cout << (v[i]? "YES" : "NO") << "\n";

}
→ Ссылка