面试题目67(机器人的运动范围)
来源:互联网 发布:移动互联网最新数据 编辑:程序博客网 时间:2024/05/15 05:34
题目:地上有一个M行N列的方格,一个机器人从坐标(0,0)的格子开始移动,它每一次可以向上下左右移动一格
,但不能进入行坐标和列坐标的数位之和大于k的格子,例如当k为18时,机器人能够进入方格(35,37),因为3+5+7+3=18
#include<iostream>using namespace std;int getdigitsum(int number){int sum=0;while(number>0){sum+=number%10;number/=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 movingcount_core(int threshold,int rows,int cols,int row,int col,bool *visited){int count=0;if(check(threshold,rows,cols,row,col,visited)){visited[row*cols+col]=true;count=1+movingcount_core(threshold,rows,cols,row,col-1,visited)+movingcount_core(threshold,rows,cols,row,col+1,visited)+movingcount_core(threshold,rows,cols,row-1,col,visited)+movingcount_core(threshold,rows,cols,row+1,col,visited);}return count;}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 count=movingcount_core(threshold,rows,cols,0,0,visited);delete [] visited;return count;}int main(){int count=movingcount(4,4,4);cout<<count<<endl;system("pause");return 0;}
1 0
- 面试题目67(机器人的运动范围)
- 机器人的运动范围
- 机器人的运动范围
- 机器人的运动范围
- 机器人的运动范围
- 机器人的运动范围
- 机器人的运动范围
- 机器人的运动范围
- 机器人的运动范围
- 机器人的运动范围
- 机器人的运动范围
- 机器人的运动范围
- 机器人的运动范围
- 机器人的运动范围
- 机器人的运动范围
- 机器人的运动范围
- 机器人的运动范围
- 机器人的运动范围
- 浅析对话框AlertDialog
- win7下安装CentOS7
- OpenCV 2.4.6在VS2010的重编译
- 四轴程序理解
- 4.html5实战训练
- 面试题目67(机器人的运动范围)
- python 中readline 和readlines的区别
- 为了有利于保护安全性,Internet Explorer 已限制此网页运行可以访问计算机的脚本或 ActiveX控件。请单击这里获取选项
- sql中drop、truncate和delete的区别
- Struts2中的缓存----以Injector为例
- android 打电话代码
- 闪动的文字和文字进度条控件
- POJ2395 Out of Hay【Kruskal】
- servlet文件上传