蒟蒻求调
  • 板块P1958 上学路线
  • 楼主tysgk
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/1/18 09:06
  • 上次更新2023/10/24 03:46:46
查看原帖
蒟蒻求调
798860
tysgk楼主2023/1/18 09:06
#include <bits/stdc++.h>
using namespace std ;
int a, b ;
int total ;
int Map[ 20 ][ 20 ] ;
int vis[ 20 ][ 20 ] ;
int n ;
int dx[ 2 ] = { 0 , 1 } ;
int dy[ 2 ] = { 1  , 0  } ;
void dfs ( int x  , int y ) {
	if ( x == a && y == b ) {
		total++ ;
		return ;
	}
	for ( int i = 0 ; i < 4 ; i++ ) {
		int newx = x + dx[ i ] ;
		int newy = y + dy[ i ] ;
		if ( 1 <= newx && newx <= a && 1 <= newy && newy <= b && Map[ newx ][ newy ] != 0 && vis[ newx ][ newy ] != 1 ) {
			vis[ newx ][ newy ] = 1 ;
			dfs ( newx , newy ) ;
			vis[ newx ][ newy ] = 0 ;
		}
	}
}
int main() {
	cin >> a >> b ;
	for ( int i = 1 ; i <= a ; i++ )
		for ( int k = 1 ; k <= b ; k++ )
			Map[ i ][ k ] = 1 ;
	cin >> n ;
	int x1 , y1 ; 
	for ( int i = 1 ; i <= n ; i++ ) {
		cin >> x1 >> y1 ;
		Map[ x1 ][ y1 ] = 0 ;
	}
	vis[ 1 ][ 1 ] = 1 ;
	dfs( 1 , 1 ) ;
	cout << total ;
	return 0 ;
}

2023/1/18 09:06
加载中...