比赛 20140714上午练习 评测结果 AAAAAAAAAA
题目名称 冲出亚马逊之圣战前夜 最终得分 100
用户昵称 wolf 运行时间 0.004 s
代码语言 C++ 内存使用 0.33 MiB
提交时间 2014-07-14 10:02:55
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<vector>
using namespace std;
FILE *in,*out;
bool TT[110][110];
int dir[4][2];
int N,sum;
bool turn(char a){
	if(a=='0'||a=='2'||a=='5'){
		return 1;
	}
	return 0;
}
bool core(int x,int y){
	++sum;
	TT[x][y]=0;
	if(x==N-1&&y==N-1)
		return 1;
	bool io=0;
	for(int i=0;i!=4;++i){
		int xn,yn;
		xn=x+dir[i][0];
		yn=y+dir[i][1];
		if(xn<0||xn==N)
			continue;
		if(yn<0||yn==N)
			continue;
		if(TT[xn][yn]){
			if(core(xn,yn))
				io=1;
		}
	}
	return io;
}
int main(){
	in=fopen("ymxpre.in","r");
	out=fopen("ymxpre.out","w");
	fscanf(in,"%d",&N);
	for(int i=0;i!=N;++i){
		for(int k=0;k!=N;++k){
			char txt;
			fscanf(in," %c",&txt);
			TT[i][k]=turn(txt);
		}
	}
	/*for(int i=0;i!=N;++i){
		for(int k=0;k!=N;++k){
			cout<<TT[i][k];
		}
		cout<<endl;
	}*/
	dir[0][0]=-1;
	dir[0][1]=0;
	dir[1][0]=0;
	dir[1][1]=-1;
	dir[2][0]=1;
	dir[2][1]=0;
	dir[3][0]=0;
	dir[3][1]=1;
	sum=0;
	if(TT[0][0]){
	}else{
		fprintf(out,"no\n0");
		return 0;
	}
	if(core(0,0)){
		fprintf(out,"yes\n%d",sum);
		//cout<<endl<<"yes"<<endl<<sum;
	}else{
		fprintf(out,"no\n%d",sum);
		//cout<<endl<<"no"<<endl<<sum;
	}
	return 0;
}
//designed by wolf