24.机器人的运动范围
#include <iostream>
using namespace std;
const int N = 55;
int dx[4]= {-1, 0, 1, 0}, dy[4] = {0, 1, 0, -1};
bool st[N][N];
int m, n, k;
int ans;
bool check(int x, int y)
{
int sum = 0;
while(x)
{
sum += x % 10;
x /= 10;
}
while(y)
{
sum += y % 10;
y /= 10;
}
if(sum > k) return false;
else return true;
}
void dfs(int a, int b)
{
if(st[a][b]) return;
st[a][b] = true;
for(int i = 0; i < 4; i ++)
{
int x = a + dx[i], y = b + dy[i];
if(x >= 0 && x < m && y >= 0 && y < n && check(x, y) && !st[x][y])
dfs(x, y), ans ++;
}
}
int main()
{
cin >> k >> m >> n;
dfs(0, 0);
cout << ans + 1 << endl;
return 0;
}