zoukankan      html  css  js  c++  java
  • 01迷宫

    非AC代码,TLE3个点

    题目描述

    有一个仅由数字0与1组成的n×n格迷宫。若你位于一格0上,那么你可以移动到相邻4格中的某一格1上,同样若你位于一格1上,那么你可以移动到相邻4格中的某一格0上。

    你的任务是:对于给定的迷宫,询问从某一格开始能移动到多少个格子(包含自身)。

    输入输出格式

    输入格式:

    输入的第1行为两个正整数n,m。

    下面n行,每行n个字符,字符只可能是0或者1,字符之间没有空格。

    接下来m行,每行2个用空格分隔的正整数i,j,对应了迷宫中第i行第j列的一个格子,询问从这一格开始能移动到多少格。

    输出格式:

    输出包括m行,对于每个询问输出相应答案。

    #include<iostream>
    #include<cstdio>
    using namespace std;
    struct wz{
    	int x,y,z,bnt;
    }dl[160005];
    struct as{
    	int lt,tt;
    }ltt[1005][1005];;
    int a,b,c,d,i,j,k,l,m,n,tzz,s,t,cnt;
    char lk;
    void search(int ap,int bp)
    {
    	if(ltt[ap][bp].lt==1)
    	{
    		if(ap+1<=n)
    		{
    			if(ltt[ap+1][bp].lt==0&<t[ap+1][bp].tt==0)
    			{
    				cnt++;
    				ltt[ap+1][bp].tt=1;
    				search(ap+1,bp);
    			}
    		}
    		if(ap-1>=1)
    		{
    			if(ltt[ap-1][bp].lt==0&<t[ap-1][bp].tt==0)
    			{
    				cnt++;
    				ltt[ap-1][bp].tt=1;
    				search(ap-1,bp);
    			}
    		}
    		if(bp+1<=n)
    		{
    			if(ltt[ap][bp+1].lt==0&<t[ap][bp+1].tt==0)
    			{
    				cnt++;
    				ltt[ap][bp+1].tt=1;
    				search(ap,bp+1);
    			}	
    		}
    		if(bp-1>=1)
    		{
    			if(ltt[ap][bp-1].lt==0&<t[ap][bp-1].tt==0)
    			{
    				cnt++;
    				ltt[ap][bp-1].tt=1;
    				search(ap,bp-1);
    			}	
    		}
    		
    	}
    	if(ltt[ap][bp].lt==0)
    	{
    		if(ap+1<=n)
    		{
    			if(ltt[ap+1][bp].lt==1&<t[ap+1][bp].tt==0)
    			{
    				cnt++;
    				ltt[ap+1][bp].tt=1;
    				search(ap+1,bp);
    			}
    		}
    		if(ap-1>=1)
    		{
    			if(ltt[ap-1][bp].lt==1&<t[ap-1][bp].tt==0)
    			{
    				cnt++;
    				ltt[ap-1][bp].tt=1;
    				search(ap-1,bp);
    			}
    		}
    		if(bp+1<=n)
    		{
    			if(ltt[ap][bp+1].lt==1&<t[ap][bp+1].tt==0)
    			{
    				cnt++;
    				ltt[ap][bp+1].tt=1;
    				search(ap,bp+1);
    			}	
    		}
    		if(bp-1>=1)
    		{
    			if(ltt[ap][bp-1].lt==1&<t[ap][bp-1].tt==0)
    			{
    				cnt++;
    				ltt[ap][bp-1].tt=1;
    				search(ap,bp-1);
    			}	
    		}
    		
    	}
    }
    int main()
    {
    	cin>>n>>m;
    	for(a=1;a<=n;a++)
    	{
    		for(b=1;b<=n;b++)
    		{
    			cin>>lk;
    			if(lk=='0')
    			{
    				ltt[a][b].lt=0;
    			}
    			else
    			{
    				ltt[a][b].lt=1;
    			}
    		}
    	}
    	cnt=1;
    	for(a=1;a<=m;a++)
    	{
    		cin>>s>>t;
    		ltt[s][t].tt=1;
    		search(s,t);
    		cout<<cnt<<endl;
    		cnt=1;
    		for(c=1;c<=n;c++)
    		{
    			for(b=1;b<=n;b++)
    			{
    				ltt[c][b].tt=0;
    			}
    		}
    	}
    }


  • 相关阅读:
    软件测试第三次作业
    第一次实验 Junit简单test三角形的小程序
    软件测试[2]falut error failure 的区别与理解
    java中使用jxl的jar包处理excel的复制,更新等问题。
    java中== 和 .equals()的区别
    c# 规格说明书
    c#第九课 linq stream(2)
    c# 第八课 linq stream
    c# 第七课 NET 框架的正则表达式类
    矩阵模版(新)
  • 原文地址:https://www.cnblogs.com/ztz11/p/9190005.html
Copyright © 2011-2022 走看看