题目:
分析:
可能曲折到达,采用递推的方式。
代码:
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,
最大的一条分割线就是从左下到右上的分割线。
第一行即可确定可到达的最大的横坐标。
为什么不向上,因为。。。
为什么不向左,因为。。。
都是因为至少该点没有向下的将它更新,说明它上面的不行,那在他下面的就更不行了。