#二维数组螺旋排序
题目:输入一个二位数组,将这个二位数据进行螺旋排序输出
输入:
第一行: M,N
第二行开始为二位数组内容
举例:
输入:
3 3
123
456
789
输出:
123
894
765
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main() {
int M, N;
while (cin >> M >> N) {
vector<vector<int>>nums(M, vector<int>(N));
vector<int>all_num(M * N);
for (int i = 0; i < M; i++) {
for (int j = 0; j < N; j++) {
cin >> all_num[i * N + j];
}
}
sort(all_num.begin(), all_num.end());
int l=0, r=0;
int count = 0;
while (count < M*N-1) {
for (int i = l; i < N - l; i++) {
nums[l][i] = all_num[count++];
}
for (int i = l + 1; i < M - l; i++) {
nums[i][N-l-1] = all_num[count++];
}
for (int i = N - l - 2; i > l; i--) {
nums[M-l-1][i] = all_num[count++];
}
for (int i = N - l - 2; i > l; i--) {
nums[i][l] = all_num[count++];
}
l++;
}
for (int i = 0; i < M; i++) {
for (int j = 0; j < N; j++) {
cout << nums[i][j] << " ";
}
cout << endl;
}
return 0;
}
}