leetcode:面试题13. 机器人的运动范围(dp)

题目:

在这里插入图片描述

分析:

可能曲折到达,采用递推的方式。

代码:

int f(int a)
{
 int sum=0;
 while(a)
 {
  sum=sum+a%10;
  a=a/10;
 }
 return sum;
}
int main()
{
 int m; 
 int n; 
 int k;
 int A[m][n];
 memset(A,0,sizeof(A));
 A[0][0]=1;
 int all=1;
 for(int i=0;i<m;i++)
 {
  for(int j=0;j<n;j++)
  {
   if(A[i][j]) 
   {
    if(j+1<n&&f(i)+f(j+1)<=k)
    {
     if(A[i][j+1]==0)
     {
      A[i][j+1]=1;all++;
     }
     } 
    if(i+1<m&&f(i+1)+f(j)<=k)
    {
     if(A[i+1][j]==0)
     {
      A[i+1][j]=1;all++;
     }
     } 
   }
  }
 }
 return all;
}

结果:

在这里插入图片描述

上面的是第一次2020.4提交的,用dp,而这次2020,12,只想到了没有优化的dp,

最大的一条分割线就是从左下到右上的分割线。
第一行即可确定可到达的最大的横坐标。
为什么不向上,因为。。。
为什么不向左,因为。。。
都是因为至少该点没有向下的将它更新,说明它上面的不行,那在他下面的就更不行了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值