地上有一個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