跳马问题--dfs

版权声明:转载请附上地址 https://blog.csdn.net/weixin_44574520/article/details/89787919

mzoj 1184在这里插入图片描述

Code:

#include <bits/stdc++.h>
using namespace std;
int n=5,ans,sx,sy,vis[7][7];
int tx[]={0,-2,-2,-1,-1,1,1,2,2};
int ty[]={0,-1,1,-2,2,-2,2,-1,1};

inline void init_() {
	freopen("a.txt","r",stdin);
}

inline void dfs_(int x,int y,int cnt) {
	if(x<1||y<1||x>n||y>n) return;
	if(cnt==25) {
		++ans;
		return;
	}
	for(int i=1;i<=8;i++) {
		int dx=x+tx[i];
		int dy=y+ty[i];
		if(vis[dx][dy]) continue;
		vis[dx][dy]=1;
		dfs_(dx,dy,cnt+1);
		vis[dx][dy]=0;
	}
}

inline void readda_() {
	scanf("%d%d",&sx,&sy);
	ans=0;
	memset(vis,0,sizeof(vis));
	vis[sx][sy]=1;
	dfs_(sx,sy,1);
	printf("%d",ans);
}

int main() {
	init_();
	readda_();
	return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_44574520/article/details/89787919
今日推荐