HOJ12134

来源:互联网 发布:华为端口nat配置 编辑:程序博客网 时间:2024/05/22 08:27
 #include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<iostream>
#include<math.h>
#define inf 0x3f3f3f;
#define MN 10001
using namespace std;
int main()
{
  // freopen("in.txt", "r", stdin);
   //freopen("wangdai.out", "w", stdout);
    int vis,e,a,b,c,d,h,jl,test,vx[MN],vy[MN],mx[MN],my[MN],begx[MN],arrx[MN],begy[MN],arry[MN],cx,v,m,n;
    char fx[MN],q;
    test=0;
    while(scanf("%d%d%d",&v,&m,&n)&&(v!=0||m!=0||n!=0))
      {
         test++;
         for(int i=1;i<=v;i++)
           scanf("%d%d",&vx[i],&vy[i]);
         for(int i=1;i<=m;i++)
           scanf("%d%d",&mx[i],&my[i]);
         for(int i=1;i<=n;i++)
           {
              scanf("%c",&q);
              scanf("%c%d%d%d%d",&fx[i],&begx[i],&begy[i],&arrx[i],&arry[i]);
              if(begx[i]>arrx[i]){h=begx[i];begx[i]=arrx[i];arrx[i]=h;}
              if(begy[i]>arry[i]){h=begy[i];begy[i]=arry[i];arry[i]=h;}
             // printf("%d  %d  %d  %d",begx[i],arrx[i],begy[i],arry[i]);
           } 
         printf("Case %d:\n",test);e=0; a = 0;b = 0;c = 0;d = 0;
         if(v == 0|| n == 0) printf("none\n");
         else 
          {
         for(int i=1;i<=v;i++)
           {
              a = 0; b = 0; c = 0 ; d = 0 ;
              for(int j=vx[i]+1;j<=100;j++)
                {
                    vis = 0;
                    for(int k=1;k<=m;k++)
                      {
                         if(mx[k]==j&&my[k]==vy[i]){ vis=1; break; }
                      }
                    if(vis==1) break;
                    for(int k=1;k<=n;k++ )
                      {
                         if(j == begx[k] && begx[k] == arrx[k] && vy[i] >= begy[k] && vy[i] <= arry[k] && fx[k] == 'W')
                           {
                              a=1;
                              break;
                           }
                         if(j == begx[k] && begx[k] == arrx[k] && vy[i] >= begy[k] && vy[i] <= arry[k] && fx[k] != 'W')
                           {
                              vis = 1;
                              break ;
                           }
                         if(begy[k] == arry[k] && vy[i] == arry[k] && j == begx[k])
                           {
                              vis = 1;
                              break;
                           }
                       } 
                     if(vis == 1) break ;
                     if(a == 1) break ;
                  }
                for(int j = vx[i]-1;j >= 0; j--)
                  {
                     vis = 0;
                     for(int k = 1; k <= m; k++)
                       {
                          if(j == mx[k] && vy[i] == my[k])
                            {
                                vis = 1; break;
                            }
                       }
                     if( vis == 1 ) break;
                     for(int k = 1 ; k<=n ; k++)
                       {
                          if(j == begx[k] && begx[k] == arrx[k] && vy[i] >= begy[k] && vy[i] <= arry[k] && fx[k] == 'E')
                            {
                                b = 1 ;
                                break;
                            } 
                          if(j == begx[k] && begx[k] == arrx[k] && vy[i] >= begy[k] && vy[i] <= arry[k] && fx[k] != 'E')
                            {
                                vis = 1;
                                break;
                            }
                          if(begy[k] == arry[k] && vy[i] == arry[k] && j == arrx[k])
                            {
                                vis = 1;
                                break;
                            }
                         
                       } if(vis == 1 || b == 1) break;
                  }
                for(int j = vy[i] + 1;j <= 100 ; j++)
                  {
                     vis = 0;
                     for(int k = 1 ;k <= m ;k++)
                       {
                          if(j == my[k] && vx[i] == mx[k])
                            {
                              vis = 1;
                              break;
                            }
                       }
                     for(int k = 1 ; k<= n ;k++)
                       {
                          if(j == begy[k] && begy[k] == arry[k] && vx[i] >= begx[k] && vx[i] <= arrx[k] && fx[k] == 'S')
                            {
                               c = 1;
                               break;
                            }
                          if(j == begy[k] && begy[k] == arry[k] && vx[i] >= begx[k] && vx[i] <= arrx[k] && fx[k] != 'S' )
                            {
                               vis = 1;
                               break;
                            }
                          if(begx[k] == arrx[k] && j == begy[k] && vx[i] == begx[k])
                            {
                               vis = 1;
                               break;
                            }
                       }
                     if(vis == 1 || c == 1) break;
                  }
                for(int j = vy[i]-1 ; j >= 0 ; j--)
                  {
                     vis = 0;
                     for(int k = 1 ; k <= m ; k++)
                       {
                          if(j == my[k] && vx[i] == mx[k])
                            {
                                vis = 1;
                                break;
                            }
                       }
                     if(vis == 1)break;
                     for(int k = 1 ; k<= n ;k++)
                       {
                          if(j == begy[k] && begy[k] == arry[k] && vx[i] >= begx[k] && vx[i] <= arrx[k] && fx[k] == 'N')
                            {
                                d = 1;
                                break;
                            }
                          if(j == begy[k] && begy[k] == arry[k] && vx[i] >= begx[k] && vx[i] <= arrx[k] && fx[k] != 'N')
                            {
                                vis = 1;
                                break;
                            }
                          if(begx[k] == arrx[k] && vx[i] == begx[k] && j == arry[k] )
                            {
                                vis = 1;
                                break;
                            }
                       }
                     if(vis == 1 || d == 1)break;
                  }
                if(a+b+c+d==0&&v==i&&e==0)printf("none\n");
                if(a+b+c+d!=0)
                  {
                     printf("vampire %d",i);
                     if(a==1)printf(" east");
                     if(c==1)printf(" north");
                     if(d==1)printf(" south");
                     if(b==1)printf(" west");
                     printf("\n");
                     e=1;
                  }
                 
           } 
        }
      }
      return 0;

}

蛋碎,最开始打的代码过不了,重新打了一次,仍然过不了,看了测试数据才知道,原来是没考虑特殊情况,V=0的时候,因为V=0的时候不进入循环不会输出NONE。

同时,这是第一次按照丘哥打代码的方式写代码,发现这样打代码比较容易发现错误,以后要养成这样的习惯

原创粉丝点击