从网格的(1,1)走到(n,m)不重复经过格子,使经过格子权值最大,格子权值均为正数。输出最大路径和和路径。
思路:
根据棋盘黑白格走法,走尽可能多的格子。
#include<bits/stdc++.h>
using namespace std;
const int N=105;
int s[N][N];
int main()
{
int n,m,i,j,sum,x,y;
while(~scanf("%d%d",&n,&m))
{
sum=0;x=1,y=2;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{
scanf("%d",&s[i][j]);
sum+=s[i][j];
if(((i+j)&1)&&s[x][y]>s[i][j])
x=i,y=j;
}
if(n&1||m&1)
{
printf("%d\n",sum);
if(n&1)
{
for(i=1;i<=n;i&