zoukankan      html  css  js  c++  java
  • cf E. Neatness

    http://codeforces.com/contest/359/problem/E

    题意:要关掉所有房间的灯,一个步骤要么开灯,要么关灯,要么向有灯的方向前进一格。输出一种关掉所有灯的方案。不能关掉所有灯输出NO

    往前搜索时点灯,后退时关灯。

     1 #include <cstdio>
     2 #include <cstring>
     3 #include <algorithm>
     4 #define maxn 505
     5 using namespace std;
     6 
     7 bool flag;
     8 int n,sx,sy;
     9 int t1,t2;
    10 int g[maxn][maxn];
    11 int vis[maxn][maxn];
    12 int dir[4][2]={{1,0},{-1,0},{0,1},{0,-1}};
    13 char dir1[4]={'D','U','R','L'};
    14 char path[1000010];
    15 
    16 bool deal(int x,int y)
    17 {
    18     if(x>=0&&x<n&&y>=0&&y<n&&!vis[x][y]) return true;
    19     return false;
    20 }
    21 bool ok(int x,int y,int i)
    22 {
    23     int xx=x+dir[i][0];
    24     int yy=y+dir[i][1];
    25     while(deal(xx,yy))
    26     {
    27         if(g[xx][yy]==1) return true;
    28         xx+=dir[i][0];
    29         yy+=dir[i][1];
    30     }
    31     return false;
    32 }
    33 
    34 void dfs(int x,int y)
    35 {
    36     if(!g[x][y])
    37     {
    38         g[x][y]=1;
    39         path[t1++]='1';
    40         t2++;
    41     }
    42     vis[x][y]=1;
    43     for(int i=0; i<4; i++)
    44     {
    45         int xx=x+dir[i][0];
    46         int yy=y+dir[i][1];
    47         if(!vis[xx][yy]&&deal(xx,yy)&&ok(x,y,i))
    48         {
    49             path[t1++]=dir1[i];
    50             dfs(xx,yy);
    51             path[t1++]=dir1[i^1];
    52         }
    53     }
    54     path[t1++]='2';
    55     t2--;
    56 }
    57 
    58 int main()
    59 {
    60     while(scanf("%d%d%d",&n,&sx,&sy)!=EOF)
    61     {
    62         t2=0;
    63         memset(vis,false,sizeof(vis));
    64         for(int i=0; i<n; i++)
    65         {
    66             for(int j=0; j<n; j++)
    67             {
    68                 scanf("%d",&g[i][j]);
    69                 if(g[i][j]==1) t2++;
    70             }
    71         }
    72         t1=0;
    73         dfs(sx-1,sy-1);
    74         if(t2) printf("NO
    ");
    75         else
    76         {
    77             printf("YES
    ");
    78             printf("%s
    ",path);
    79         }
    80     }
    81     return 0;
    82 }
    View Code
  • 相关阅读:
    洛谷P1880 [NOI1995]石子合并 (区间dp
    洛谷P1012 拼数(水题 字符串
    洛谷P1071 潜伏者(水题
    微信《跳一跳》超高分攻略,轻松排行榜首
    StringUtilsd的isEmpty、isNotEmpty、isBlank、isNotBlank
    java.util.Properties类
    timer.scheduleAtFixedRate和timer.schedule的实验
    schedule() 和 scheduleAtFixedRate() 区别
    session和jsessionid有什么关系
    增加Xss过滤步骤
  • 原文地址:https://www.cnblogs.com/fanminghui/p/3939849.html
Copyright © 2011-2022 走看看