题目大意:给出一个矩阵由.,*组成,求里面一个最小的子矩阵能够包含所有*


解题思路:找出最靠近左上方的*和最靠近右下方的*号,截出那个矩阵就可以了。


             ~~o(∩_∩)o ~不为切题而切题~~,是为纪念第一道CF题和第一次使用STL而写!!!

代码:
 1#include <iostream>
 2#include <cstdio>
 3#include <cstring>
 4#include <string>
 5
 6using namespace std;
 7
 8string s[60];
 9int i,j,maxx,maxy,minx,miny,n,m;
10
11int 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