题目大意:
输入第一行两个整数表示下面那个矩阵的行数和列数,第二行开始输入一个矩阵。从左上角到右下角,只能向下或者向右走,输出所经过的数字和最大。
Sample Input
1 3 4 1 10 8 8 0 0 1 8 0 27 0 4
Sample Output
Scenario #1: 42
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int map[1100][1100],dp[1100][1100];
int main()
{
int t,n,m,num=1;
cin>>t;
while(t--)
{
cin>>n>>m;
for(int i=1; i<=n; i++)
{
for(int j=1; j<=m; j++)
{
cin>>map[i][j];
}
}
memset(dp,0,sizeof(dp));
for(int i=1; i<=n; i++)
{
for(int j=1; j<=m; j++)
{
dp[i][j]=max(dp[i-1][j]+map[i][j],dp[i][j-1]+map[i][j]);
}
}
cout<<"Scenario #"<<num<<":"<<endl;
num++;
cout<<dp[n][m]<<endl;
cout<<endl;
}
return 0;
}