C++ 矩阵交换,横向内容修改成竖向

要求将二维数组 横向内容 换成竖向内容
要求: vector容器存储 ,算法用函数封装
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16

1 5 9 13
2 6 10 14
3 7 11 15
4 8 12 16

发现的问题:
vector 二维数组创建及其声明 不会
一开始的思路不正确,在大佬的帮助下,通过坐标交换的方式解决了。
简单举例 1,2 与 2,1交换;然后遇到 1,1 退出;

#include <vector>
#include <iostream>
using namespace std;
void show(vector<vector<int>> v1)
{
    for (int i = 0; i != v1.size(); i++)
    {
        for (int j = 0; j != v1.size(); j++)
            cout << v1[i][j] << " ";
        cout << endl;
    }
}

void reverse(vector<vector<int>>& v)
{
    for (int i = 0; i != v.size(); ++i)
    {
        for (int j = 0; j != v.size(); j++)
        {
            if (i == j)
                break;
            else if (i != j )
            {
                int temp = v[i][j];
                v[i][j] = v[j][i];
                v[j][i] = temp;
            }
        }
    }
}

int main()
{
    //二维数组创建
    int m = 4, n = 4;
    vector<vector<int>> v1(m);
    for (int i = 0; i != v1.size(); i++)
        v1[i].resize(n);
        
    //初始化
    int count = 1;
    for (int i = 0; i != 4; i++)
    {
        for (int j = 0; j != 4; j++)
        {
            v1[i][j] = count;
            count++;
        }
    }
    reverse(v1);
    show(v1);
}

猜你喜欢

转载自blog.csdn.net/GameStrategist/article/details/108120483