剑指Offer——机器人的运动范围

原创 2016年05月30日 14:53:15
题目描述:地上有m行n列的方格,机器人从(0,0)开始,每次可以向上、下、左、右移动一步,

                   但不能进入行坐标和列坐标的数位之和大于K的方格。请问该机器人可以到达多少个格子。

//得到一个数字的数位之后
int getDigitSum(int num)
{
   int sum=0;

   while(num>0)
   {
       sum+=num%10;
       num=num/10;
   }
   return sum;
}

//检验某个方格是否可入
bool check(int threshold,int rows,int cols,int row,int col,bool* visited)
{
  if(row>=0&&row<rows&&col>=0&&col<cols&&getDigitSum(row)+getDigitSum(col)<=threshold&&!visited[row*cols+col])
        return true;
  return false;
}

int movingCountCore(int threshold,int rows,int cols,int row,int col,bool* visited)
{
    int countnum=0;
    if(check(threshold,rows,cols,row,col,visited))
    {
        visited[row*cols+col]=true;
        countnum=1+movingCountCore(threshold,rows,cols,row+1,col,visited)
                  +movingCountCore(threshold,rows,cols,row-1,col,visited)
                  +movingCountCore(threshold,rows,cols,row,col+1,visited)
                  +movingCountCore(threshold,rows,cols,row,col-1,visited);

    }
    return countnum;
}
int movingCount(int threshold,int rows,int cols)
{
    bool *visited=new bool[rows*cols];
    for(int i=0;i<rows*cols;++i)
        visited[i]=false;

    int countn=movingCountCore(threshold,rows,cols,0,0,visited);
    delete[] visited;

    return countn;
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

剑指offer——机器人的运动范围

题目描述:        地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k...

剑指offer(68):机器人的运动范围(回溯法)

题目描述地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够...

【每天一道剑指offer】1:机器人的运动范围

题目描述地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够...

剑指offer-机器人的运动范围

剑指offer-机器人的运动范围分享此题的目的是目前对回溯类型算法不太熟悉,这里做个记录,题目并不难 地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四...

《剑指offer》机器人的运动范围

【 声明:版权所有,转载请标明出处,请勿用于商业用途。  联系信箱:libin493073668@sina.com】 题目链接:http://www.nowcoder.com/p...

剑指Offer:机器人的运动范围

地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格(...

剑指Offer面试题67:机器人的运动范围 Java实现

题目:机器人的运动范围           地上有一个m行n列的方格。一个机器人从坐标(0,0)的格子开始移动,它每次可以向左,向右,向上,向下移动一格,但不能进入行坐标和列坐标的位数之和大于k...

【剑指Offer学习】【面试题67:机器人的运动范围】

题目:地上有个m行n列的方格。一个机器人从坐标(0,0)的格子开始移动,它每一次可以向左、右、上、下移动一格,但不能进入行坐标和列坐标的数位之和大于k的格子。举例分析  例如,当k为18时,机器人能够...

《剑指offer》:[67]机器人的运动范围

题目:地上有个m行n列的方格。一个机器人从坐标(0,0)的格子开始移动,它每一次可以向左、右、上、下移动一格,但不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(...
  • gogoky
  • gogoky
  • 2016-06-30 11:06
  • 1226

机器人运动范围--《剑指offer》

题目描述: 地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)