程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> HDU 5092 DP

HDU 5092 DP

編輯:C++入門知識

HDU 5092 DP


DP水題

求從上到下走完,使所取得權值最小,並輸出路徑,若有多個滿足,則輸出靠右的


#include "stdio.h"
#include "string.h"

int inf=0x3f3f3f3f;

struct node
{
    int x,y;
}dp[110][110];
int main()
{
    int Case,ii,i,j,n,m,ans;
    int a[110][110];
    scanf("%d",&Case);
    for (ii=1;ii<=Case;ii++)
    {
        scanf("%d%d",&n,&m);
        for (i=1;i<=n;i++)
            for (j=1;j<=m;j++)
            scanf("%d",&a[i][j]);

        memset(dp,inf,sizeof(dp));

        for (i=1;i<=m;i++)
            dp[n][i].x=a[n][i];

        for (i=n-1;i>=1;i--)
            for (j=1;j<=m;j++)
            {
                dp[i][j].x=dp[i+1][j].x+a[i][j];
                dp[i][j].y=j;

                if (j-1>=1 && dp[i+1][j-1].x+a[i][j]

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved