AcWing 24. 机器人的运动范围
原题链接
简单
作者:
成为一个优秀的人
,
2021-03-14 10:49:01
,
所有人可见
,
阅读 317
#include<iostream>
using namespace std;
int dx[]={-1,0,1,0},dy[]={0,1,0,-1};
int cnt,k,n,m;
bool f[55][55];
int work(int x)
{
int d=0;
d=d+x/10+x%10;
return d; //计算各位之和
}
void dfs(int x,int y)
{
if(work(x)+work(y)>k) //如果超出k就退出
return ;
f[x][y]=true; //标记已走过
cnt++; //个数加1
for(int i=0;i<4;i++)
{
int a=x+dx[i],b=y+dy[i];
if(a>=0&&a<m&&b>=0&&b<n&&!f[a][b]) //如果在边界内并且未走过就继续dfs
dfs(a,b);
}
}
int main()
{
cin>>k>>m>>n;
dfs(0,0);
cout<<cnt;
return 0;
}