就是迷宫连通性的问题,定义两个二维数组,一个存节点,一个存连通状态,用深度优先搜索即可得到答案,时间复杂度n*logn
代码如下:

public void Button1Click(object sender, EventArgs e)
{
	StreamReader sr = new StreamReader("D:/in.txt",Encoding.Default);
	String line=sr.ReadLine();
	int t=Int32.Parse(line);
	while(t-->0){
		line=sr.ReadLine();
		int n=Int32.Parse(line);
		line=sr.ReadLine();
		string[] start=line.Split(' ');
		int startx=Int32.Parse(start[0])-1;
		int starty=Int32.Parse(start[1])-1;
		line=sr.ReadLine();
		string[] end=line.Split(' ');
		int endx=Int32.Parse(end[0])-1;
		int endy=Int32.Parse(end[1])-1;
		char[][] positionchar=new char[n][];
		int[][] position=new int[n][];
		for(int i=0;i<n;i++){
			line=sr.ReadLine();
			positionchar[i]=line.ToCharArray();
			position[i]=new int[n];
			for(int j=0;j<n;j++){
				position[i][j]=0;
			}
        }
		dfs(startx,starty,positionchar,position,n);
		textBox1.Text+=position[endx][endy]+"";
	}
	
	for(int i=0;i<60;i++){
		textBox2.Text+=(char)Convert.ToInt32(textBox1.Text.Substring(i*8,8),2);
	}
}

//深度搜索
public void dfs(int x,int y,char[][] positionchar,int[][] position,int n){
    position[x][y]=1;
    if(x-1>=0 && positionchar[x-1][y]!='X' && position[x-1][y]!=1) dfs(x-1,y,positionchar,position,n);
    if(y-1>=0 && positionchar[x][y-1]!='X' && position[x][y-1]!=1) dfs(x,y-1,positionchar,position,n);
    if(x+1<n && positionchar[x+1][y]!='X' && position[x+1][y]!=1) dfs(x+1,y,positionchar,position,n);
    if(y+1<n && positionchar[x][y+1]!='X' && position[x][y+1]!=1) dfs(x,y+1,positionchar,position,n);
}
出来了一堆0和1: 

011000010100100001010010001100000110001101000100011011110111011001001100001100110110010000110011011001000111100100110101011110100110000101000111011011000011010101011001010101110011010101101001010110010101100001001001011101010101100100110010001110010111010001001100001100100100111000110000010110100110100100111000011110000100111101000100010010010011000001010010011011010111100001101000010110100011000001101100011110100101100101010110010101100101001101010100010000010011110100111101 
这么长的内容肯定不是答案,编成ascii码: 

for(int i=0;i<60;i++){
	textBox2.Text+=(char)Convert.ToInt32(textBox1.Text.Substring(i*8,8),2);
}

得到:aHR0cDovL3d3dy5zaGl5YW5iYXIuY29tL2N0Zi8xODI0RmxhZ0lzYVVSTA==

再base64解码,得到:

http://www.shiyanbar.com/ctf/1824FlagIsaURL

去掉后面的字母,可以看到1824题目,得到1824题目的答案即为正确的flag

大坑,终于试出来了,是1824附件的地址,而且之前不是ctf5,Flag详见下面

Flag:

温馨提示: 此处内容需要评论本文后刷新才能查看,支付2元即可直接查看所有Flag。

小广告:关于获取西普实验吧所有Writeup请点击这里查看索引

查看所有Flag需要付费,需要获取所有Flag的童鞋请访问这里成为付费用户,可以自助把自己的注册邮箱加入网站白名单,即可免回复看到本站所有Flag

Flag大全地址:所有Flag

PS:本站不是实验吧的官方站点,纯粹是个人博客,收取Flag费用仅是维持服务器费用,做站不易,且行窃珍惜,如果喜欢我的博客,愿意捐赠的,可以扫描下面的二维码

微信二维码:
支付宝二维码: