剑指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为18时,机器人能...
  • kangaroo835127729
  • kangaroo835127729
  • 2015年04月19日 15:16
  • 1182

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

【 声明:版权所有,转载请标明出处,请勿用于商业用途。  联系信箱:libin493073668@sina.com】 题目链接:http://www.nowcoder.com/p...
  • libin1105
  • libin1105
  • 2015年09月14日 13:45
  • 1109

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

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

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

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

《剑指offer》刷题笔记(回溯法):机器人的运动范围

《剑指offer》刷题笔记(回溯法):机器人的运动范围 转载请注明作者和出处:http://blog.csdn.net/u011475210 代码地址:https://github.com/WordZ...
  • u011475210
  • u011475210
  • 2017年12月26日 21:31
  • 1319

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

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

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

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

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

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

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

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

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

题目:地上有个m行n列的方格。一个机器人从坐标(0,0)的格子开始移动,它每一次可以向左、右、上、下移动一格,但不能进入行坐标和列坐标的数位之和大于k的格子。举例分析  例如,当k为18时,机器人能够...
  • DERRANTCM
  • DERRANTCM
  • 2015年07月15日 07:21
  • 2690
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:剑指Offer——机器人的运动范围
举报原因:
原因补充:

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