网友投稿 542 2022-10-24
HDU 2686 Matrix(双线程DP)
题目地址:#include #include #include #include #include #include #include #include #include #include const int inf = 0x3f3f3f3f;//1061109567typedef long long LL;#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1using namespace std;int map1[35][35];int dp[35][35][35][35];int main(){ int n; while(scanf("%d",&n) != EOF) { memset(dp,0,sizeof(dp)); for(int i=1; i<=n; i++) { for(int j=1; j<=n; j++) { scanf("%d",&map1[i][j]); } } for(int i=1; i<=n; i++) { for(int j=1; j<=n; j++) { for(int k=i+1; k<=n; k++) { int l = i + j - k;//确定第二部的纵坐标 if(l <= 0) break; dp[i][j][k][l] = max(max(dp[i-1][j][k-1][l],dp[i][j-1][k][l-1]),max(dp[i-1][j][k][l-1],dp[i][j-1][k-1][l])); dp[i][j][k][l] += map1[i][j] + map1[k][l]; } } } printf("%d\n",dp[n-1][n][n][n-1]+map1[1][1]+map1[n][n]); } return 0;}
大神写的三维的
#include #include #include #include #include #include #include #include #include #include #include const int inf = 0x3f3f3f3f;//1061109567typedef long long LL;#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1using namespace std;int map1[55][55];int dp[110][55][55];int main(){ int n; while(scanf("%d",&n) != EOF) { memset(dp,0,sizeof(dp)); for(int i=0; i 版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~
暂时没有评论,来抢沙发吧~