zoukankan      html  css  js  c++  java
  • POJ 3752

    http://poj.org/problem?id=3752

    这是一道我觉得还蛮有意思的题目,不难,是个水题,但我也TLE了几次,感到很奇怪,这么简单的循环还TLE,最后一想,肯定是有几个例子我是没有考虑到的

    我觉得就是考你对循环的使用吧

    代码写的有点长,有点琐碎

     1 #include <stdio.h>
     2 #include <iostream>
     3 #include <string.h>
     4 
     5 using namespace std;
     6 
     7 char str[101][101];
     8 
     9 bool mark[101][101];
    10 
    11 int main()
    12 {
    13     int m,n,i,j;
    14     while(scanf("%d%d",&m,&n)!=EOF)
    15     {
    16         memset(mark,false,sizeof(mark));
    17         for(i=1;i<=m;i++)
    18             for(j=1;j<=n;j++)       //对需要存字母的地方进行初始化,因为我的判断退出的标志是它的四周都已经有了字母,而有字母则是false,想不通的就考虑2,2这一种情况
    19                 mark[i][j]=true;
    20         for(i=1;;)
    21         {
    22             str[1][1]='A';
    23             mark[1][1]=false;
    24             if(i==1)
    25             {
    26                 for(j=2;j<=n&&mark[i][j];j++)
    27                 {
    28                     if(str[i][j-1]=='Z') str[i][j]='A';
    29                     else str[i][j]=str[i][j-1]+1;
    30                     mark[i][j]=false;
    31                 }
    32                 i++;
    33                 j--;
    34                 if(i>m) break;
    35             }
    36             else
    37             {
    38             for(;i<=m&&mark[i][j];i++)
    39             {
    40                 if(str[i-1][j]=='Z') str[i][j]='A';
    41                 else str[i][j]=str[i-1][j]+1;
    42                 mark[i][j]=false;
    43             }
    44             i--;
    45             if(!mark[i+1][j]&&!mark[i-1][j]&&!mark[i][j+1]&&!mark[i][j-1]) break;
    46             for(j--;j>=1&&mark[i][j];j--)
    47             {
    48                 if(str[i][j+1]=='Z') str[i][j]='A';
    49                 else str[i][j]=str[i][j+1]+1;
    50                 mark[i][j]=false;
    51             }
    52             j++;
    53             if(!mark[i+1][j]&&!mark[i-1][j]&&!mark[i][j+1]&&!mark[i][j-1]) break;
    54             for(i--;i>=1&&mark[i][j];i--)
    55             {
    56                 if(str[i+1][j]=='Z') str[i][j]='A';
    57                 else str[i][j]=str[i+1][j]+1;
    58                 mark[i][j]=false;
    59             }
    60             i++;
    61             if(!mark[i+1][j]&&!mark[i-1][j]&&!mark[i][j+1]&&!mark[i][j-1]) break;
    62             for(j++;j<=n&&mark[i][j];j++)
    63                 {
    64                     if(str[i][j-1]=='Z') str[i][j]='A';
    65                     else str[i][j]=str[i][j-1]+1;
    66                     mark[i][j]=false;
    67                 }
    68             j--;
    69             i++;
    70             if(!mark[i+1][j]&&!mark[i-1][j]&&!mark[i][j+1]&&!mark[i][j-1]) break;
    71             }
    72         }
    73             for(i=1;i<=m;i++)
    74         {
    75             for(j=1;j<=n;j++)
    76                 printf("   %c",str[i][j]);
    77             printf("
    ");
    78         }
    79     }
    80     return 0;
    81 }
  • 相关阅读:
    一起学习Avalonia(八)
    国产下的netcore
    一起学习Avalonia(七)
    一起学习Avalonia(六)
    一起学习Avalonia补充(deepin下的使用开发t调试)
    一起学习Avalonia(五)
    一起学习Avalonia补充(Linux下的使用开发)
    一起学习Avalonia(四)
    一起学习Avalonia(三)
    html页面边框的简单设置方法
  • 原文地址:https://www.cnblogs.com/Tree-dream/p/5397227.html
Copyright © 2011-2022 走看看