要求将二维数组 横向内容 换成竖向内容
要求: 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);
}