zoukankan      html  css  js  c++  java
  • JAVA实现剑指offer,机器人的运动轨迹

    题目

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

    public int moving(int threshold,int rows,int cols)
        {
            if(threshold==0)
            {
                return 0;
            }
            int[][] flag=new int[rows][cols];
            return count(threshold,rows,cols,0,0,flag);
                    
        }
        
        public int count(int threshold,int rows,int cols,int i,int j,int[][] flag)
        {
            if(i<0||i>=rows||j<0||j>cols||flag[i][j]==1||sum(i)+sum(j)>threshold)
            {
                return 0;
            }
            flag[i][j]=1;
            return 1+count(threshold,rows,cols,i-1,j,flag)
            +count(threshold,rows,cols,i,j-1,flag)
            +count(threshold,rows,cols,i+1,j,flag)
            +count(threshold,rows,cols,i,j+1,flag);
        }
        public int sum(int i)
        {
            int s=0;
            while(i>0)
            {
                s+=i%10;
                i=i/10;
            }
            return s; 
        }
  • 相关阅读:
    @codeforces
    @codeforces
    @hdu
    @hdu
    @bzoj
    @bzoj
    @topcoder
    推荐系统主题相关资料
    Python统计百分比及排序
    如何发布及部署asp.net网站
  • 原文地址:https://www.cnblogs.com/lumc5/p/15102883.html
Copyright © 2011-2022 走看看