题目大意:给出一个矩阵由.,*组成,求里面一个最小的子矩阵能够包含所有*
解题思路:找出最靠近左上方的*和最靠近右下方的*号,截出那个矩阵就可以了。
~~o(∩_∩)o ~不为切题而切题~~,是为纪念第一道CF题和第一次使用STL而写!!!
代码:
1
#include <iostream>
2
#include <cstdio>
3
#include <cstring>
4
#include <string>
5
6
using namespace std;
7
8
string s[60];
9
int i,j,maxx,maxy,minx,miny,n,m;
10
11
int main()
12

{
13
while (~scanf("%d%d",&n,&m))
14
{
15
minx=1<<30;
16
miny=1<<30;
17
maxx=-(1<<30);
18
maxy=-(1<<30);
19
for (i=1; i<=n; i++)
20
{
21
cin >> s[i];
22
int pos=s[i].find("*");
23
if (pos!=string::npos)
24
{
25
if (minx>pos) minx=pos;
26
int pos1=0;
27
for (int l=0; l<s[i].size(); l++)
28
if (s[i][l]=='*') pos1=l;
29
if (maxx<pos1) maxx=pos1;
30
if (miny>i) miny=i;
31
if (maxy<i) maxy=i;
32
}
33
}
34
for (i=miny; i<=maxy; i++)
35
{
36
for (j=minx; j<=maxx; j++)
37
printf("%c",s[i][j]);
38
cout << endl;
39
}
40
41
}
42
}
43