来自蒟蒻的提问
  • 板块灌水区
  • 楼主yljx
  • 当前回复3
  • 已保存回复3
  • 发布时间2022/7/5 21:42
  • 上次更新2023/10/27 21:47:33
查看原帖
来自蒟蒻的提问
381510
yljx楼主2022/7/5 21:42

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;
	}
}
2022/7/5 21:42
加载中...