只有0分 全RE 各位大佬救救孩子吧qaq
查看原帖
只有0分 全RE 各位大佬救救孩子吧qaq
536959
梦想之洛谷楼主2021/8/7 11:08

只有0分 全RE

各位大佬救救孩子吧

#include <iostream>
#include <cmath>
#include <cstdio>
#include <cstring>
using namespace std;
int n,m,k,sum = 0,xa,xb,ya,yb,x,y,fx[5]={0,0,0,-1,1},fy[5]={0,1,-1,0,0};
							// n,m为行数和列数,k为障碍数,sum为方法数 
							//xa,ya,xb,yb,x,y分别为起点坐标、终点坐标、障碍点坐标 
							//数组fx,fy分别表示四个方向(上、下、左、右) 
bool f[10][10],b[10][10];	// 数组f表示该点是否曾走过(1表示曾走过) 
	 						// 数组b表示该点是否有障碍(1表示有障碍)
int search(int,int,int);		//定义搜索函数 
int main(){
	memset(b, 0, sizeof(b));//数组清零 
	memset(f, 0, sizeof(f)); 
	cin >> n >> m >> k >> xa >> ya >> xb >> yb;
		   	 	  	   	    // 读入数据 
	for(int i = 1; i <= k; i++)
	{
		cin >> x >> y;		// 读入障碍点坐标 
		b[x][y] = 1;		//标记障碍点 
	}
	search(xa,ya,sum);		//调用函数 
	cout << sum << endl; 
	return 0;
}
int search(int x,int y,int sum){
			   				//搜索 
	for(int i = 1; i <= 4; i++)
	{
		if(!f[x + fx[i]][y + fy[i]] && !b[x + fx[i]][y + fy[i]])
				  		    //满足条件 
		{
			f[x + fx[i]][y + fy[i]] = 1;
				  		    //标记 
			if((x + fx[i]) == xb && (y + fy[i]) ==yb)	sum++;
   				  			//到达目的  
			else	search(x + fx[i], y + fy[i], sum);
							//继续递归 
			f[x + fx[i]][y + fy[i]] = 0;
				  		   	//回溯 
		}
	} 
}

为方便理解 本蒟蒻加上了注释

2021/8/7 11:08
加载中...