zoukankan      html  css  js  c++  java
  • 【codevs1043】 方格取数

    http://codevs.cn/problem/1043/ (题目链接)

    题意

      N*N的方格,每个格子中有一个数,寻找从(1,1)走到(N,N)的两条路径,使得取到的数的和最大。

    Solution

      水题,${f[i][j][k][l]}$表示一条路走到(i,j),另一条路走到(k,l),取到的最大的数。

    代码

    // codevs1043
    #include<algorithm>
    #include<iostream>
    #include<cstring>
    #include<cstdlib>
    #include<cstdio>
    #include<cmath>
    #include<queue>
    #define LL long long
    #define inf 2147483640
    #define MOD 10000
    #define Pi acos(-1.0)
    #define free(a) freopen(a".in","r",stdin),freopen(a".out","w",stdout);
    using namespace std;
     
    const int maxn=20;
    int a[maxn][maxn],f[maxn][maxn][maxn][maxn],n,m;
    
    int main() {
    	scanf("%d",&n);
    	int u,v,w;
    	while (scanf("%d",&u)!=EOF && u) {
    		scanf("%d%d",&v,&w);
    		a[u][v]=w;
    	}
    	for (int i=1;i<=n;i++)
    		for (int j=1;j<=n;j++)
    			for (int k=1;k<=n;k++)
    				for (int l=1;l<=n;l++) {
    					f[i][j][k][l]=max(max(f[i-1][j][k-1][l],f[i-1][j][k][l-1]),max(f[i][j-1][k-1][l],f[i][j-1][k][l-1]))+a[i][j]+a[k][l];
    					if (i==k && j==l) f[i][j][k][l]-=a[i][j];
    				}
    	printf("%d",f[n][n][n][n]);
    	return 0;
    }
    

      

  • 相关阅读:
    gulp备忘
    好文收藏
    妙味H5交互篇备忘
    [CSS3备忘] transform animation 等
    css选择器总结
    flexbox备忘
    函数
    继承2
    在 Swift 中实现单例方法
    浅谈 Swift 中的 Optionals
  • 原文地址:https://www.cnblogs.com/MashiroSky/p/6189318.html
Copyright © 2011-2022 走看看