为什么30分???
查看原帖
为什么30分???
685742
zhangenrui666楼主2022/4/6 21:26
#include<bits/stdc++.h>
using namespace std;
int a[7][7],ans=0,n,m,t,sx,sy,fx,fy,x,y;
int dx[4]={0,0,1,-1};
int dy[4]={1,-1,0,0};
bool flag[7][7];
void search(int x1,int y1)
{
	if(x1==fx && y1==fy) ans++;
	else if(a[x1][y1]==0 || flag[x1][y1]==0) return; 
	else
	{
		for (int i=0;i<=3;i++)
		{
			if(flag[x1+dx[i]][y1+dy[i]]==0 && a[x1+dx[i]][y1+dy[i]]==0)
			{
                flag[x1][y1]=1;
                search(x1+dx[i],y1+dy[i]);
                flag[x1][y1]=0;
            }
		}
	}
}
int main()
{	
    scanf("%d%d%d",&n,&m,&t);
    scanf("%d%d%d%d",&sx,&sy,&fx,&fy);
    memset(a,0,sizeof(a));
    memset(flag,0,sizeof(flag));
    for (int i=1;i<=n;i++)
    {
    	for (int i=1;i<=m;i++)
    	{
    		a[n][m]=1;
    	}
    }
    for (int i=1;i<=t;i++)
    {  
    	scanf("%d%d",&x,&y);
    	a[x][y]=0;
    }
    if(a[fx][fy]==0)
    {
        printf("0");
        return 0;
    }
    search(sx,sy);
    printf("%d",ans);
	return 0;
}
2022/4/6 21:26
加载中...