PS:看过《提问的智慧》了
emmm,很是不好开口,今天本人写了一道基础的搜索题——
信奥1219马走日(没错就是他大神们不要走)
然鹅呢……写的小快,样例也过了,可是
只对了3个点……
以下是代码
#include<bits/stdc++.h>
using namespace std;
int n,m,x,y;
int ans[15]={0};//存储答案
int road[15][15]={0};//标记
int dx[10]={0,1,2,2,1,-1,-2,-2,-1};
int dy[10]={0,2,1,-1,-2,-2,-1,1,2};
//马的8种走法
void dfs(int a,int b,int t,int step){
if(step==n*m){//都走了一遍
ans[t]++;
return;
}//t是第几组数据
for(int i=1;i<=8;i++){
int x1=a+dx[i];
int y1=b+dy[i];
if(n>x1&&x1>=0&&m>y1&&y1>=0){
if(road[x1][y1]==0){
road[x1][y1]=1;
dfs(x1,y1,t,step+1);
road[x1][y1]=0;
// return;
}
}
}
// return;
}
int main(){
freopen("in.cpp","r",stdin);
int t;
cin>>t;
for(int i=1;i<=t;i++){
cin>>n>>m>>x>>y;
road[x][y]=1;
ans[i]=0;
dfs(x,y,i,1);
}
for(int i=1;i<=t;i++){
cout<<ans[i];
if(i+1<=t)cout<<endl;
}
}