题意:
思路:dfs搜索路径,经过后就标机保证不回头,走不了的时候回到上层得取消此时的标机完成回溯。
#include<bits/stdc++.h> using namespace std; const int maxn=7; int a[maxn][maxn]; bool flag[maxn][maxn]; int x1[6]={ 0,-1,1,0,0}; int y11[6]={0,0,0,1,-1}; int n,m,t,sx,sy,fx,fy; int ans; bool jg(int i,int j){ if(j>=1&&j<=m&&i>=1&&i<=n&&flag[i][j]==0){ return true; } return false; } void dfs(int i,int j){ int x,y; if(i==fx&&j==fy){ ans++; return ; } for(int d1=1;d1<=4;d1++){ x=x1[d1]+i; y=y11[d1]+j; if(jg(x,y)){ flag[x][y]=1; dfs(x,y); flag[x][y]=0; } } } int main() { int x1,y1,i,j; cin>>n>>m>>t; cin>>sx>>sy>>fx>>fy; flag[sx][sy]=1; for(i=0;i<t;i++){ cin>>x1>>y1; flag[x1][y1]=1; } dfs(sx,sy); cout<<ans<<endl; }