当前位置:首页 > 操作系统 > Windows

Ugly Windows

poj3923:http://poj.org/problem?id=3923

题意:给出两个整数n、m表示屏幕的长宽。屏幕上有一些窗口,每个窗口都是矩形的,窗口的边框用同一个大写字母来表示,不同的窗口的大写字母必定不同。

由于窗口的重叠,有些窗口的有些部分被其他窗口覆盖。但是,肯定有一些窗口在最顶端,不被其他任何窗口覆盖。我们称这些窗口为“顶端窗口”。你的任务就是找出所有的顶端窗口。

题解:简单的模拟。结果我错了很多次啊。首先,没有考虑到边框的内部一定要是‘.‘,然后是最坑就是每个窗口的高度和宽度都不能小于3,自己模拟能力还是很弱啊,要多打打。

                <span> 1</span> #include<iostream>
<span> 2</span> #include<cstdio>
<span> 3</span> #include<cstring>
<span> 4</span> #include<algorithm>
<span> 5</span> #include<queue>
<span> 6</span><span>using</span><span>namespace</span><span> std;
</span><span> 7</span><span>bool</span> visit[<span>30</span>],ans[<span>30</span><span>];
</span><span> 8</span><span>char</span> mp[<span>102</span>][<span>102</span><span>];
</span><span> 9</span><span>struct</span><span> Node{
</span><span>10</span><span>int</span><span> x1,y1;
</span><span>11</span><span>int</span><span> x2,y2;
</span><span>12</span> }num[<span>30</span><span>];
</span><span>13</span><span>int</span><span> n,m;
</span><span>14</span><span>int</span><span> main(){
</span><span>15</span><span>while</span>(~scanf(<span>"</span><span>%d%d</span><span>"</span>,&n,&<span>m)){
</span><span>16</span><span>if</span>(n==<span>0</span>&&m==<span>0</span>)<span>break</span><span>;
</span><span>17</span><span>if</span>(n<<span>3</span>||m<<span>3</span>)<span>continue</span><span>;
</span><span>18</span>         memset(visit,<span>0</span>,<span>sizeof</span><span>(visit));
</span><span>19</span>         memset(num,<span>0</span>,<span>sizeof</span><span>(num));
</span><span>20</span>         memset(mp,<span>0</span>,<span>sizeof</span><span>(mp));
</span><span>21</span>         memset(ans,<span>0</span>,<span>sizeof</span><span>(ans));
</span><span>22</span><span>for</span>(<span>int</span> i=<span>0</span>;i<=<span>29</span>;i++<span>){
</span><span>23</span>             num[i].x1=num[i].y1=<span>1000</span><span>;
</span><span>24</span>             num[i].x2=num[i].y2=<span>0</span><span>;
</span><span>25</span><span>        }
</span><span>26</span><span>for</span>(<span>int</span> i=<span>1</span>;i<=n;i++<span>)
</span><span>27</span><span>for</span>(<span>int</span> j=<span>1</span>;j<=m;j++<span>){
</span><span>28</span>                 cin>><span>mp[i][j];
</span><span>29</span><span>if</span>(mp[i][j]!=<span>‘</span><span>.</span><span>‘</span><span>){
</span><span>30</span>                     num[mp[i][j]-<span>‘</span><span>A</span><span>‘</span>].x1=min(num[mp[i][j]-<span>‘</span><span>A</span><span>‘</span><span>].x1,i);
</span><span>31</span>                     num[mp[i][j]-<span>‘</span><span>A</span><span>‘</span>].y1=min(num[mp[i][j]-<span>‘</span><span>A</span><span>‘</span><span>].y1,j);
</span><span>32</span>                     num[mp[i][j]-<span>‘</span><span>A</span><span>‘</span>].x2=max(num[mp[i][j]-<span>‘</span><span>A</span><span>‘</span><span>].x2,i);
</span><span>33</span>                     num[mp[i][j]-<span>‘</span><span>A</span><span>‘</span>].y2=max(num[mp[i][j]-<span>‘</span><span>A</span><span>‘</span><span>].y2,j);
</span><span>34</span>                     visit[mp[i][j]-<span>‘</span><span>A</span><span>‘</span>]=<span>1</span><span>;
</span><span>35</span><span>                }
</span><span>36</span><span>            }
</span><span>37</span><span>for</span>(<span>int</span> i=<span>0</span>;i<=<span>29</span>;i++<span>){
</span><span>38</span><span>if</span><span>(visit[i]){
</span><span>39</span><span>int</span> t1=<span>num[i].x1;
</span><span>40</span><span>int</span> t2=<span>num[i].y1;
</span><span>41</span><span>int</span> t3=<span>num[i].x2;
</span><span>42</span><span>int</span> t4=<span>num[i].y2;
</span><span>43</span><span>bool</span> flag=<span>false</span><span>;
</span><span>44</span><span>for</span>(<span>int</span> j=t2;j<=t4;j++<span>){
</span><span>45</span><span>if</span>((mp[t1][j]!=(<span>‘</span><span>A</span><span>‘</span>+i))||(mp[t3][j]!=(<span>‘</span><span>A</span><span>‘</span>+<span>i))){
</span><span>46</span>                     flag=<span>true</span><span>;
</span><span>47</span><span>break</span><span>;
</span><span>48</span><span>                 }
</span><span>49</span><span>               }
</span><span>50</span><span>for</span>(<span>int</span> j=t1;j<=t3;j++<span>){
</span><span>51</span><span>if</span>(mp[j][t2]!=(<span>‘</span><span>A</span><span>‘</span>+i)||mp[j][t4]!=(<span>‘</span><span>A</span><span>‘</span>+<span>i)){
</span><span>52</span>                     flag=<span>true</span><span>;
</span><span>53</span><span>break</span><span>;
</span><span>54</span><span>                 }
</span><span>55</span><span>               }
</span><span>56</span><span>if</span>(t3-t1<<span>2</span>||t4-t2<<span>2</span>)flag=<span>true</span><span>;
</span><span>57</span><span>if</span>(!<span>flag)
</span><span>58</span>               ans[i]=<span>1</span><span>;
</span><span>59</span><span>            }
</span><span>60</span><span>        }
</span><span>61</span><span>for</span>(<span>int</span> i=<span>0</span>;i<=<span>29</span>;i++<span>){
</span><span>62</span><span>if</span><span>(visit[i]){
</span><span>63</span><span>for</span>(<span>int</span> k=num[i].x1+<span>1</span>;k<num[i].x2;k++<span>){
</span><span>64</span><span>for</span>(<span>int</span> j=num[i].y1+<span>1</span>;j<num[i].y2;j++<span>){
</span><span>65</span><span>if</span>(mp[k][j]!=<span>‘</span><span>.</span><span>‘</span><span>)
</span><span>66</span>                         ans[i]=<span>0</span><span>;
</span><span>67</span><span>                }
</span><span>68</span><span>              }
</span><span>69</span><span>           }
</span><span>70</span><span>        }
</span><span>71</span><span>for</span>(<span>int</span> i=<span>0</span>;i<=<span>29</span>;i++<span>)
</span><span>72</span><span>if</span><span>(ans[i])
</span><span>73</span>             printf(<span>"</span><span>%c</span><span>"</span>,i+<span>‘</span><span>A</span><span>‘</span><span>);
</span><span>74</span>        printf(<span>"</span><span>n</span><span>"</span><span>);
</span><span>75</span><span>    }
</span><span>76</span> }
View Code

 

原文:http://www.cnblogs.com/chujian123/p/3886566.html


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!

相关教程推荐

其他课程推荐