搜索每一个点;
联系flood fill;
#include <iostream>
#include <algorithm>
#include <cstring>using namespace std;const int N=55;int t,n,m;
char g[N][N];void dfs(int x,int y)
{if(x+1>n||g[x+1][y]=='o'||g[x+1][y]=='*')// 一般三个条件:出界没有,走过了没,能不能走;return ;swap(g[x][y],g[x+1][y]);dfs(x+1,y);
}void solve ()
{cin>>n>>m;for(int i=1;i<=n;i++)cin>>g[i];for(int i=n;i>=1;i--)// 倒着搜是因为 dfs中g[x+1][y]=='*'就return了;//如果顺着搜就不满足竖着 “**.”这种情况;{for(int j=0;j<m;j++){if(g[i][j]=='*'){dfs(i,j);}}}for(int i=1;i<=n;i++){for(int j=0;j<m;j++){putchar(g[i][j]);} cout<<endl;}
}int main()
{cin>>t ;while(t--){solve(); }return 0;
}