70分求助,谢谢谢谢
  • 板块P1605 迷宫
  • 楼主Ryoo
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/4/18 18:05
  • 上次更新2024/4/18 20:37:09
查看原帖
70分求助,谢谢谢谢
1100140
Ryoo楼主2024/4/18 18:05

#include <bits/stdc++.h>


using namespace std;
int n,m,t,sx,sy,fx,fy,deal[100][2],coun = 0;
int tx,ty,b[7][7],wayx[4] = {1,0,-1,0},wayy[4] = {0,1,0,-1};		//way:右下左上 


void search(int x_in,int y_in,int k) {
	int xin,yin;
	for(int i = 0; i <= 3; i++) {
		if(b[y_in+wayy[i]][x_in+wayx[i]] == 1 && y_in+wayy[i] <= m && x_in+wayx[i] <= n) {
			xin = x_in + wayx[i];yin = y_in + wayy[i];
			b[yin][xin] = 0;
			if(xin == fx && yin == fy) coun++;
			else search(xin,yin,k+1);
			b[yin][xin] = 1;
		}
	}
}
int main() {
//边缘判定 
	for(int i = 1; i <= 6; i++) {
		for(int j = 1; j <= 6; j++)
		b[i][j] = 1;
	}
	scanf("%d %d %d", &n,&m,&t);
	scanf("%d %d %d %d", &sx,&sy,&fx,&fy);
	deal[0][0] = sx;deal[0][1] = sy;
	for(int i = 1; i <= t; i++) {
		scanf("%d %d", &tx,&ty);
		b[ty][tx] = 0;
	}
	search(sx,sy,1);
	printf("%d", coun);
}
2024/4/18 18:05
加载中...