5 6
**##**
****#*
***##*
#*****
***#**
##****
##****
#*****
#*****
#*****文章来源:https://uudwc.com/A/rZ6p6
#include<iostream>
using namespace std;
#define MAX 1024
char a[MAX][MAX];
void H(char arr[][MAX], int n,int idx) {//n列数 ,idx 某行
int left = 0;
int right = n - 1;
char t;
while (left < right) {
int left = 0;
int right = n - 1;
while (arr[idx][left] == '#')
left++;
while (arr[idx][right] == '*')
right--;
if (left >= right)
break;
t = arr[idx][left];
arr[idx][left] = arr[idx][right];
arr[idx][right] = t;
}
}
void L(char arr[][MAX], int n, int idx) {//n行数 ,idx 某列
int top = 0;
int down = n - 1;
char t;
while (top < down) {
int top = 0;
int right = n - 1;
while (arr[top][idx] == '#')
top++;
while (arr[down][idx] == '*')
down--;
if (top >= down)
break;
t = arr[top][idx];
arr[top][idx] = arr[down][idx];
arr[down][idx] = t;
}
}
void print(int h,int l) {
for (int i = 0; i < h; i++) {
for (int j = 0; j < l; j++)
cout << a[i][j];
cout << endl;
}
}
int main() {
int h, l;
cin >> h>>l;
for (int i = 0; i < h; i++) {
for (int j = 0; j < l; j++)
cin >> a[i][j];
getchar();
}
//print(h,l);
for (int i = 0; i < h; i++)
H(a,l,i);
for (int i = 0; i < h; i++)
L(a,h,i);
print(h, l);
return 0;
}
文章来源地址https://uudwc.com/A/rZ6p6