地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?


// test20.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include<iostream>
#include<vector>
#include<string>
#include<queue>
#include<stack>
#include<cstring>
#include<string.h>
#include<deque>
#include <forward_list>

using namespace std;

class Solution {
public:

	vector<vector<bool>> flag; //访问标志,

	int movingCount(int threshold, int rows, int cols)
	{
		for (int i = 0;i < rows;++i)//没有访问过设置为true
		{
			vector<bool> vec;
			for (int j = 0;j < cols;++j)
			{
				vec.push_back(false);
			}
			flag.push_back(vec);
		}
		return movCount(threshold, rows, cols,0,0) ;
	}

	//此函数为回溯函数
	int movCount(int threshold, int rows, int cols,int i,int j)//访问的是当前的单元
	{
		if (i < 0 || i >= rows || j < 0 || j >= cols || !LegalOrNot(threshold, i, j) || flag[i][j]) return 0;
		flag[i][j] = true;
		return movCount(threshold, rows, cols, i - 1, j) +
			movCount(threshold, rows, cols, i + 1, j) +
			movCount(threshold, rows, cols, i , j-1) +
			movCount(threshold, rows, cols, i , j+1) +1;

	}

	//此函数为来标注该格子是否是合法的,可以允许访问
	bool LegalOrNot(int threshold, int row, int col)
	{
		int num = 0;
		while (row != 0)
		{
			num = num + row % 10;
			row = row / 10;
		}
		while (col != 0)
		{
			num = num + col % 10;
			col = col / 10;
		}
		if (num <= threshold)
			return true;//合法访问
		return false;
	}
};
int main()
{


	Solution so;
	//cout << 1 / 10 << endl;
	cout << "数量为:" << so.movingCount(10, 1, 100) << endl;

	return 0;
}


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



猜您在找 地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子? 工业机器人_建立工具坐标和工具坐标 【排列组合】给定一个M*N的格子或棋盘,从左下角走到右上角的走法总数(每次只能向右或向上移动一个方格边长的距离) halcon坐标转换(机器人坐标转换用) Leetcode练习(Python) :数组类:第62题:一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。 问总共有多少条不同的路径? 不同路径(一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。 问总共有多少条不同的路径?) 机器人关节(Joint)之间的坐标变换(Transform) ROS 机器人技术 - 广播与接收 TF 坐标 Leetcode练习(Python):数组类:第63题:一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。 现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径? 不同路径II(一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。 现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用 1 和 0 来表示。)
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM