踩方格--深搜

在这里插入图片描述

#include <iostream>
#include <cstring> 
using namespace std; 
int visited[30][50]; //记录位置i,j是否被走过
int ways ( int i,int j,int n) 
{ 
	if( n == 0)
		return 1;  //一步都不用走
	visited[i][j] = 1;  //起点位置标记走过i,j了
	int num = 0;  //几种走法
	if( ! visited[i][j-1] ) //西边的方格是否能走
		num+= ways(i,j-1,n-1); 
	if( ! visited[i][j+1] )  //东
		num+= ways(i,j+1,n-1); 
	if( ! visited[i+1][j] )  //北
		num+= ways(i+1,j,n-1);
	visited[i][j] = 0; //这里很重要,对于不同的路来说,方格可以重复走,只是对于同一条路来说,方格不可以重复
	return num;
}
int main() 
{
	int n; 
	cin >> n;
	memset(visited, 0, sizeof(visited));//所有的方块都没有走过
	cout << ways(0, 25, n) << endl; //挑一个起点
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值