hdu 2571
来源:互联网 发布:重庆大学怎么样知乎 编辑:程序博客网 时间:2024/05/17 08:56
#include<iostream>#include<limits.h>using namespace std;int n,m,i,j,k;int C;int mat[25][1005];int dp[25][1005];int max(int a,int b){return a>b?a:b;}int main(){ cin>>C; while(C--){ memset(dp,0,sizeof(dp)); cin>>n>>m; for(i=1;i<=n;i++) for(j=1;j<=m;j++){ cin>>mat[i][j]; dp[i][j]=mat[i][j]; } for(i=1;i<=n;i++) for(j=1;j<=m;j++){ int big=-INT_MAX; for(k=1;k<j;k++){ if(j%k==0||(j>1&&k==j-1)){ big=max(big,dp[i][k]); } } if(i>1) big=max(big,dp[i-1][j]); if(i!=1||j!=1) dp[i][j]+=big; } cout<<dp[n][m]<<endl; //system("pause"); }}