#include <iostream>
using namespace std;
class Solution {
public:
int t ,r, c = 0;
int result = 0;
bool res1[100][100] = {false};
int movingCount(int threshold, int rows, int cols) {
t = threshold;
r = rows;
c = cols;
int i_1 = 0;
int i_2 = 0;
//
if(rows > 0 && cols > 0){
backTracking( i_1, i_2);
}
return result;
}
void backTracking(int i_1, int i_2){
int a = i_1 % 10 + i_1 / 10;
int b = i_2 % 10 + i_2 / 10;
if(a + b <= t){
result += 1;
res1[i_1][i_2] = true;
if(i_1 + 1 < r && !res1[i_1 + 1][i_2]){
backTracking(i_1 + 1, i_2);
}
// if(0 <= i_1 - 1 && i_1 - 1 < r && 0 <= i_2 && i_2 < c && rew[i_1 - 1][i_2]){
// backTracking(rew, i_1 - 1, i_2);
// rew[i_1 - 1][i_2] = true;
// }
if(i_2 + 1< c && !res1[i_1][i_2 + 1]){
backTracking(i_1 , i_2 + 1);
}
// if(0 <= i_1 && i_1 < r && 0 <= i_2 - 1 && i_2 - 1 < c && rew[i_1][i_2 - 1]){
// backTracking(rew, i_1 , i_2 - 1);
// // rew[i_1][i_2 - 1] = true;
// }
}
return ;
}
};
using namespace std;
class Solution {
public:
int t ,r, c = 0;
int result = 0;
bool res1[100][100] = {false};
int movingCount(int threshold, int rows, int cols) {
t = threshold;
r = rows;
c = cols;
int i_1 = 0;
int i_2 = 0;
//
if(rows > 0 && cols > 0){
backTracking( i_1, i_2);
}
return result;
}
void backTracking(int i_1, int i_2){
int a = i_1 % 10 + i_1 / 10;
int b = i_2 % 10 + i_2 / 10;
if(a + b <= t){
result += 1;
res1[i_1][i_2] = true;
if(i_1 + 1 < r && !res1[i_1 + 1][i_2]){
backTracking(i_1 + 1, i_2);
}
// if(0 <= i_1 - 1 && i_1 - 1 < r && 0 <= i_2 && i_2 < c && rew[i_1 - 1][i_2]){
// backTracking(rew, i_1 - 1, i_2);
// rew[i_1 - 1][i_2] = true;
// }
if(i_2 + 1< c && !res1[i_1][i_2 + 1]){
backTracking(i_1 , i_2 + 1);
}
// if(0 <= i_1 && i_1 < r && 0 <= i_2 - 1 && i_2 - 1 < c && rew[i_1][i_2 - 1]){
// backTracking(rew, i_1 , i_2 - 1);
// // rew[i_1][i_2 - 1] = true;
// }
}
return ;
}
};