dfs解一道数学题,咋没过呢?
题目大意:
一个4∗8的地图,每次可以走到右上或右下,从左下角到右上角有多少种方案?
#include<bits/stdc++.h>
#define def_used 1
using namespace std;
int dx[2]={1,1},dy[2]={1,-1},ans,used[10][10];
void dfs(int x,int y)
{
if(x==4&&y==8)
{
ans++;
return ;
}
for(int i=0;i<2;i++)
{
int tx=x+dx[i],ty=y+dy[i];
if(tx<1||tx>4||ty<1||ty>8) continue;
if(used[tx][ty]&&def_used) continue;
if(def_used) used[tx][ty]=1;
dfs(tx,ty);
if(def_used) used[tx][ty]=0;
}
}
int main()
{
dfs(1,1);
printf("%d",ans);
return 0;
}