• 01迷宫


    题目描述

    有一个仅由数字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;
    			}
    		}
    	}
    }


  • 相关阅读:
    Spring-10-AOP先验知识之代理模式
    Spring-09-使用Java的方式配置Spring
    Spring-08-使用注解开发
    Spring-07-Bean自动配置
    Spring-06-依赖注入(DI)
    Spring-05-配置之别名、bean、import
    Spring-04-IOC创建对象的方式
    Spring-02-IOC理论推导
    Spring-01-初见spring
    h5
  • 原文地址:https://www.cnblogs.com/ztz11/p/9189994.html
Copyright © 2020-2023  润新知