京东网站注册,国内外网站开发技术有哪些,网站对联代码,短视频营销现状目录 1. 题目
2. 思路
3. C代码测试
4. 测试结果 1. 题目 地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动#xff0c;每一次只能向左#xff0c;右#xff0c;上#xff0c;下四个方向移动一格#xff0c;但是不能进入行坐标和列坐标的数位之和大于k的格…目录 1. 题目
2. 思路
3. C代码测试
4. 测试结果 1. 题目 地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动每一次只能向左右上下四个方向移动一格但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如当k为18时机器人能够进入方格35,37因为3537 18。但是它不能进入方格35,38因为3538 19。请问该机器人能够达到多少个格子
2. 思路 这道题类似走迷宫我们可以先用矩阵全部存储false代表没有走过 编写计算一个数的各数位和的函数 对于任意一点我们需要对它它的上下左右一共5个点进行判断每遍历一个点则该false为ture 按照上述一条要求编写判断一点及其周围满足条件的点数量 利用递归计算总数 这里为了计算更加简单把二维数组改写成一位数组进行计算 每个点是否满足条件的判断点必须在该矩阵中各数位和小于规定值每个点代表的值为false也就是没有遍历过 3. C代码测试
#includeiostream
using namespace std;//计算各数位的和
int sum(int n)
{
int result0;
while(n)
{
resultn%10;
nn/10;
}
return result;
}//计算一个点及四周满足条件的点数量
int moving(int threshold,int rows,int cols,int m,int n,bool *flag)
{
int count0;
if(m0mrowsn0ncolssum(m)sum(n)thresholdflag[m*colsn]false)
{
flag[m*colsn]true;
count1moving(threshold,rows,cols,m-1,n,flag)moving(threshold,rows,cols,m1,n,flag)moving(threshold,rows,cols,m,n-1,flag)moving(threshold,rows,cols,m,n1,flag);
}return count;}//计算二维数组中满足条件的总点数
int movingCount(int threshold, int rows, int cols){bool *flagnew bool[rows*cols];for (int i0;irows*cols;i)flag[i]false;int countmoving(threshold,rows,cols,0,0,flag);return count;}int main()
{//测试代码
coutmovingCount(18,100,100);return 0;
}4. 测试结果