zoukankan      html  css  js  c++  java
  • 城市交通路网

    【题目描述】

    下图表示城市之间的交通路网,线段上的数字表示费用,单向通行由A->E。试用动态规划的最优化原理求出A->E的最省费用。

    如图:求v1到v10的最短路径长度及最短路径。

    【输入】

    第一行为城市的数量N;

    后面是N*N的表示两个城市间费用组成的矩阵。

    【输出】

    A->E的最省费用。

    【输入样例】

    10
    0  2  5  1  0  0  0  0  0  0
    0  0  0  0 12 14  0  0  0  0
    0  0  0  0  6 10  4  0  0  0
    0  0  0  0 13 12 11  0  0  0
    0  0  0  0  0  0  0  3  9  0
    0  0  0  0  0  0  0  6  5  0
    0  0  0  0  0  0  0  0 10  0
    0  0  0  0  0  0  0  0  0  5
    0  0  0  0  0  0  0  0  0  2
    0  0  0  0  0  0  0  0  0  0

    【输出样例】

    minlong=19
    1 3 5 8 10
     1 #include<iostream>
     2 #include<cstring>
     3 #include<cstdio>
     4 using namespace std;
     5 int main(){
     6     long n,i,j,x,f[100],c[100],a[100][100];
     7     memset(a,0,sizeof(a));
     8     memset(c,0,sizeof(c));
     9     cin>>n;
    10     for(i=1;i<=n;i++)
    11         for(j=1;j<=n;j++) cin>>a[i][j];
    12     for(i=1;i<=n;i++) f[i]=1000000;
    13     f[n]=0;
    14     for(i=n-1;i>=1;i--)
    15         for(x=i+1;x<=n;x++)
    16             if((a[i][x]>0)&&(f[x]!=1000000)&&(f[i]>a[i][x]+f[x])){
    17                 f[i]=a[i][x]+f[x];
    18                 c[i]=x;
    19             }
    20     cout<<"minlong="<<f[1]<<endl;
    21     x=1;
    22     while(x!=0){
    23         cout<<x<<" ";
    24         x=c[x];
    25     }
    26     return 0;
    27 }

    最近一段时间先练练dp,

    主要是背包,

    没办法,

    我太菜了,

    需要时间的磨炼qwq。

    好,

    一道简单又基础的dp,

    我就不多说了,

    我这种蒟蒻都会的,

    也不指望有谁不会qwq

  • 相关阅读:
    cenos安装memcache
    微信开发——测试号申请,接口配置,JS接口安全域名,自定义菜单
    mysql设计-优化
    mysql设计-基本操作
    CI框架部署后访问出现404
    ueditor的bug
    git操作
    github基本操作
    基于SSH协议clone GitHub远端仓库到本地-git
    Thinkphp5.0 路由
  • 原文地址:https://www.cnblogs.com/sxy2004/p/12274409.html
Copyright © 2011-2022 走看看