传纸条

如果状态之间能够相互推出 注意排除冗余状态

//main::
	f[0][1][1]=a[1][1];
	for(int i=1;i<=(n+m-2);i++)
		for(int j=1;j<=n;j++)
			for(int k=1;k<=n;k++)
				if(i+2-j>0&&i+2-k>0)
				{
					int &x=f[i][j][k];
					x=max(x,f[i-1][j-1][k-1]);
					x=max(x,f[i-1][j][k-1]);
					x=max(x,f[i-1][j-1][k]);
					x=max(x,f[i-1][j][k]);
					x+=a[j][i+2-j]+a[k][i+2-k]*(j!=k);
				}
	printf("%d",f[n+m-2][n][n]);
上一篇:14.3练习题1


下一篇:Go包管理