我的
代码
#include<iostream>
#include<vector>
using namespace std;
int output(vector<vector<int>> arr, int m, int n, int k){
//逆时针打印矩阵外圈
int i = 0, j = 0; //起点坐标
for(; i < m - 1; i++){
cout << arr[i+k][j+k] << " ";
}
if(n - 1 == 0){
cout << arr[i+k][k];
return 0;
}
else
cout << arr[i+k][k] << " ";
//左
for(++j; j < n - 1; j++){
cout << arr[i+k][j+k] << " ";
}
if(m - 1 == 0){
cout << arr[i+k][j+k];
return 0;
}
else
cout << arr[i+k][j+k] << " ";
//下
for(--i; i > 0; i--){
cout << arr[i+k][j+k] << " ";
}
if(n - 2 == 0){
cout << arr[i+k][j+k];
return 0;
}
else
cout << arr[i+k][j+k] << " ";
//右
for(--j; j > 1; j--){
cout << arr[i+k][j+k] << " ";
}
if(m - 2 == 0){
cout << arr[i+k][j+k];
return 0;
}
else
cout << arr[i+k][j+k] << " ";
//上
output(arr, m - 2, n - 2, ++k);
}
int main(){
int m, n;
cin >> m >> n;
vector<vector<int>> arr(m, vector<int>(n));
for(int j = 0;j < m;j++)
for(int k = 0;k< n;k++)
cin >> arr[j][k] ;
output(arr, m, n, 0);
return 0;
}
学习反思
动态数组的创建
文件头#include<vector>
vector<vector<int>> a(m, vector<int>(n));
注意函数中的参数类型要保持一致,不是 int**