讨论/题目交流/剑指offer第13题:机器人的运动范围/
剑指offer第13题:机器人的运动范围

剑指offer的第13题,求大佬帮忙看看!
思路:从(0,0)出发,往右走或往下走,每走一步k=k-1;如果遇到坐标为个位数为9的话,k=k+8;直到K=0且个位数不为9,结束。
运行总是出错,但想不出是哪里的问题,希望大佬可以帮忙看看!感谢。

class Solution {
public:
int helper(int& m, int& n, int k,int i,int j,vector<int>& table)
{
if(i==m||j==n) return 0;
if(table[in+j]==1) return 0;
else table[i
n+j]=1;
if(k==0&&(i+1)%10!=0&&(j+1)%10!=0)
{
table[in+j]=1;
return 1;
}
//--k;
//return helper(m,n,k,i,j+1,table)+helper(m,n,k,i+1,j,table)+1;
//if(table[i
n+j]==1) return 0;
//else table[in+j]=1;
int res;
if((i+1)%10==0&&(j+1)%10==0)
res=helper(m,n,k+8,i,j+1,table)+helper(m,n,k+8,i+1,j,table)+1;
else if((i+1)%10==0&&(j+1)%10!=0)
res=helper(m,n,k-1,i,j+1,table)+helper(m,n,k+8,i+1,j,table)+1;
else if((i+1)%10!=0&&(j+1)%10==0)
res=helper(m,n,k+8,i,j+1,table)+helper(m,n,k-1,i+1,j,table)+1;
else
res=helper(m,n,k-1,i,j+1,table)+helper(m,n,k-1,i+1,j,table)+1;
return res;
}
int movingCount(int m, int n, int k) {
if(m<=0||n<=0) return 0;
if(k==0) return 1;
vector<int> table(m
n);
return helper(m,n,k,0,0,table);
}
};

展开讨论
共 0 个讨论
无讨论