void DFS(int threshold, int rows, int cols, int x, int y, int visit[][101]);
int movingCount(int threshold, int rows, int cols)
{
    int visit[101][101];
    memset(visit, 0, sizeof(visit));
    int count = 0;
    DFS(threshold, rows, cols, 0, 0, visit);
    for (int i = 0; i < rows; i++)
        for (int j = 0; j < cols; j++)
            if (visit[i][j])
                count++;

    return count;
}

void DFS(int threshold, int rows, int cols, int x, int y, int visit[][101])
{
    //边界条件
    if (x < 0 || x >= rows || y < 0 || y >= cols || visit[x][y] == 1)
        return;
    int tempSum;
    tempSum = x % 10 + x / 10 + y % 10 + y / 10;
    if (tempSum <= threshold)
    {

        visit[x][y] = 1;
        DFS(threshold, rows, cols, x + 1, y, visit);
        DFS(threshold, rows, cols, x, y + 1, visit);
    }

    return;
}