5 6
**##**
****#*
***##*
#*****
***#**
##****
##****
#*****
#*****
#*****
- #include
- 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;
- }