时间:1s 空间:256M
题目描述:
小信有一块 n×m 的由方格拼成的布料,粗心的他把这块布料弄破了一些洞,当布料的一行/列不存在完整布料的话需要将这行/列剪掉,将剩下的布料拼起来,直到布料中每一行/列都有完整的布料。现在给你这块布料图,请输出修补好后的布料图。("."代表破洞,"#"代表完整的布料)
输入格式:
第一行包含两个整数 n,m,表示布料大小。
接下来包含一个 n×m 的矩阵,表示布料图 ,("."代表破洞,"#"代表完整的布料)。
输出格式:
输出一个矩阵表示答案。
样例1输入:
4 4 ##.# .... ##.# .#.#
样例1输出:
### ### .##
样例2输入:
3 3 #.. .#. ..#
样例2输出:
#.. .#. ..#
样例3输入:
4 5 ..... ..... ..#.. .....
样例3输出:
#
约定:
对于100%的数据,1≤n,m≤100
开数组存数据,模拟扫一遍完事。
下附AC代码
#include <bits/stdc++.h>
using namespace std;
char s[108][108];
unordered_map<int, bool> judgex;
unordered_map<int, bool> judgey;
int n, m;
int main()
{
cin >> n >> m;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++)
{
cin >> s[i][j];
}
for (int i = 1; i <= n; i++)
{
bool nos = false;
for (int j = 1; j <= m; j++)
if (s[i][j] == '#')
nos = true;
if (nos == false)
judgex[i] = true;
}
for (int i = 1; i <= m; i++)
{
bool nos = false;
for (int j = 1; j <= n; j++)
if (s[j][i] == '#')
nos = true;
if (nos == false)
judgey[i] = true;
}
for (int i = 1; i <= n; i++)
{
if (judgex[i])
continue;
for (int j = 1; j <= m; j++)
{
if (judgey[j])
continue;
cout << s[i][j];
}
cout << "\n";
}
}