比赛 |
20140714上午练习 |
评测结果 |
AAAAAAAAAA |
题目名称 |
冲出亚马逊之圣战前夜 |
最终得分 |
100 |
用户昵称 |
752199526 |
运行时间 |
0.005 s |
代码语言 |
C++ |
内存使用 |
0.41 MiB |
提交时间 |
2014-07-14 10:01:37 |
显示代码纯文本
#include<iostream>
#include<fstream>
#include<iomanip>
#include<cstdio>
#include<cmath>
#include <cstdlib>
#include<cstring>
#include<cctype>
#include<vector>
#include<queue>
#include<deque>
#include<stack>
#include<cassert>
#include<algorithm>
#include<functional>
#include<ctime>
using namespace std;
ifstream fin("ymxpre.in");
ofstream fout("ymxpre.out");
int map[110][110],vis[110][110],n,ans=0;
bool OK=false;
const int xx[5]={0,1,0,-1,0};
const int yy[5]={0,0,1,0,-1};
void DFS(int x,int y);
int main()
{
//Init
fin>>n;
memset(map,0,sizeof(map));
memset(map,0,sizeof(map));
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
char k;fin>>k;
if(k=='0'||k=='2'||k=='5'){map[i][j]=vis[i][j]=1;}//统一变量:1为可走;0为不可走或走过
}
}
DFS(1,1);//搜索到(n,n)为止
if(OK)fout<<"yes"<<endl<<ans<<endl;
else fout<<"no"<<endl<<ans<<endl;
return 0;
}
void DFS(int x,int y)
{
if((map[x][y]==0)||(vis[x][y]==0))return;
vis[x][y]=0;ans++;
if(x==n&&y==n){OK=true;return;}//到达终点
for(int i=1;i<=4;i++)
{
int xi=x+xx[i],yi=y+yy[i];DFS(xi,yi);
}
}