#include<string .h>
using namespace std
int s[105][105],n,m
struct node{
int a[20]
}sum
node jia (node a,node b)
{}//高精?
node ans
int len=max(a.a[0],b.a[0])
memset(ans.a,0,sizeof(ans.a))
for (int i=1i<=leni++)
{
ans.a[i]=a.a[i]+b.a[i]
while (ans.a[i]>9)
{
ans.a[i]-=10
ans.a[i+1]++
}
}
if (ans.a[len+1]==0)
ans.a[0]=len
else
ans.a[0]=len+1
return ans
}
node score (int aint n)
{}//取数得分(这个地方把高精乘低精包含进去了,直接默认乘2)
node ans
int len=0
memset(ans.a,0,sizeof(ans.a))
while (a!=0)
{
len++
ans.a[i]=a%10
a/=10
}
ans.a[0]=len
for (int i=1i<=ni++)
{
for (int j=1j<=lenj++)
ans.a[j]*=2
for (int j=1j<=lenj++)
while (ans.a[j]>9)
{
ans.a[j]-=10
ans.a[j+1]++
}
}
if (ans.a[len+1]==0)
ans.a[0]=len
else
ans.a[0]=len+1
return ans
}
int main(void)
{
cin>>n>>m
for (int i=1i<=ni++)
for (int j=1j<=mj++)
cin>>s[i][j]
//其他照旧dp ......
}
很简单的动规啊首先每一行可以独立计算~
f[i,j]表示取走某一行从第i个到第j个的最佳值
最后一个取的肯定是i或者j
于是就得出上面那个转移方程了
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)