状态转移方程是dp[i][j]=max(dp[i][j],dp[i-1][k]+inc[i][j]-co[k][j]);
#include<stdio.h>
#include<string.h>
int dp[105][105];//第i天在j城市的最大收入
int inc[105][105];//i天在j城市的收入
int co[105][105];//从i城市到j城市花费
int main()
{
int m,n;
while(scanf("%d%d",&n,&m)!=EOF)
{
if(m==0&&n==0)
{
break;
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
scanf("%d",&co[i][j]);
}
}
for(int i=1;i<=m;i++)
{
for(int j=1;j<=n;j++)
{
scanf("%d",&inc[i][j]);
}
}
memset(dp,0,sizeof(dp));
for(int i=1;i<=n;i++)
{
dp[1][i]=dp[1][i]+inc[1][i]-co[1][i];
}
for(int i=2;i<=m;i++)
{
for(int j=1;j<=n;j++)
{
for(int k=1;k<=n;k++)
{
if(dp[i][j]<dp[i-1][k]+inc[i][j]-co[k][j])
{
dp[i][j]=dp[i-1][k]+inc[i][j]-co[k][j];
}
}
}
}
int max=0;
for(int i=1;i<=n;i++)
{
if(dp[m][i]>max)
{
max=dp[m][i];
}
}
printf("%d\n",max);
}
}