• 地上有一个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;
    }
  • 相关阅读:
    Jenkins中Jelly邮件模板的配置
    十天冲刺(10)
    代码大全阅读笔记01
    大二下学期学习进度(十)
    十天冲刺(9)
    十天冲刺(8)
    统计文章中字母、单词出现的频率
    十天冲刺(7)
    十天冲刺(6)
    十天冲刺(5)
  • 原文地址:https://www.cnblogs.com/wdan2016/p/6115759.html
Copyright © 2020-2023  润新知