码迷,mamicode.com
首页 > 其他好文 > 详细

codeforecs Gym 100286B Blind Walk

时间:2015-08-09 00:19:49      阅读:126      评论:0      收藏:0      [点我收藏+]

标签:

一个好玩的交互式程序,要用到一个函数fflush,它的作用是对标准输出流的清理,对stdout来说是及时地打印数据到屏幕上,一个事实:标准输出是以『行』为单位进行的,也即碰到\n才打印数据到屏幕。这就可能造成延时。在Windows平台上是看不出来的,它被改成及时生效了。而fflush对stdin的作用是清除冗余输入。

#include<cstdio>

const int maxn = 123; //要AC
const int maxlen = 42;
bool vis[maxn][maxn];
char dir[4][maxlen] = {"NORTH","EAST","SOUTH","WEST"};
char done[] = "DONE";

int dx[] = {0,1,0,-1} , dy[] = {1,0,-1,0};
char response[maxlen];

bool Move(int d)
{
    puts(dir[d]);
    fflush(stdout);
    gets(response);
    return *response == E;
}

void dfs(int x,int y)
{
    vis[x][y] = true;
    for(int i = 0; i < 4; i++) {
        int nx = x + dx[i], ny = y + dy[i];
        if(!vis[nx][ny] && Move(i)) dfs(nx,ny),Move((i+2)%4);
        else vis[nx][ny] = true;
    }
}

int main()
{
    int x = 42, y = 42;
    dfs(x,y);
    puts(done);
    fflush(stdout);
    return 0;
}

 

codeforecs Gym 100286B Blind Walk

标签:

原文地址:http://www.cnblogs.com/jerryRey/p/4714120.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!