zoukankan      html  css  js  c++  java
  • HDU 5569 matrix

    简单DP

    /* ***********************************************
    Author        :Zhou Zhentao
    Email         :774388357@qq.com
    Created Time  :2015/11/21 9:45:58
    File Name     :acm.cpp
    ************************************************ */
    #include<cstdio>
    #include<cstring>
    #include<cmath>
    #include<vector>
    #include<queue>
    #include<algorithm>
    using namespace std;
    
    
    
    int mat[1000+10][1000+10];
    int flag[1000+10][1000+10];
    int dp[1000+10][1000+10];
    int  n,m;
    
    int main()
    {
        while(~scanf("%d%d",&n,&m)){
    
        for(int i=0;i<n;i++)
            for(int j=0;j<m;j++)
                scanf("%d",&mat[i][j]);
    
    
        flag[0][0]=1;
        for(int i=1;i<m;i++) flag[0][i]=abs(1-flag[0][i-1]);
    
        for(int i=1;i<n;i++)
            for(int j=0;j<m;j++)
                flag[i][j]=abs(1-flag[i-1][j]);
    
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<m;j++)
            {
                if(i==0&&j==0) dp[i][j]=0;
                if(i==0)
                {
                    if(flag[i][j]==0)
                    {
                        dp[i][j]=dp[i][j-1]+mat[i][j]*mat[i][j-1];
                    }
                    else
                    {
                        dp[i][j]=dp[i][j-1];
                    }
                }
                else if(j==0)
                {
                    if(flag[i][j]==0)
                    {
                        dp[i][j]=dp[i-1][j]+mat[i][j]*mat[i-1][j];
                    }
                    else
                    {
                        dp[i][j]=dp[i-1][j];
                    }
                }
                else
                {
                    if(flag[i][j]==0)
                    {
                        dp[i][j]=min(dp[i][j-1]+mat[i][j]*mat[i][j-1],dp[i-1][j]+mat[i][j]*mat[i-1][j]);
                    }
    
                    else
                    {
                        dp[i][j]=min(dp[i][j-1],dp[i-1][j]);
                    }
                }
            }
        }
        printf("%d
    ",dp[n-1][m-1]);
        }
        return 0;
    }
  • 相关阅读:
    Python3输入输出
    Python3文件
    Python3OS文件/方法
    makefile通用版本(一)
    C语言正则表达式
    正则表达式
    sed、awk工具
    shell编程
    Sqlite3-安装使用
    Powershell-获取命令和帮助
  • 原文地址:https://www.cnblogs.com/zufezzt/p/4984808.html
Copyright © 2011-2022 走看看