zoukankan      html  css  js  c++  java
  • NOI 7614 最低通行费(多段图最短路)

    http://noi.openjudge.cn/ch0206/7614/

    题意:

    有一个N*N的正方形网格,商人从网格的左上角进,右下角出。每穿越中间1个小方格,都要花费1个单位时间。商人必须在(2N-1)个单位时间穿越出去。而在经过中间的每个小方格时,都需要缴纳一定的费用。

    这个商人期望在规定时间内用最少费用穿越出去。请问至少需要多少费用?

    注意:不能对角穿越各个小方格(即,只能向上下左右四个方向移动且不能离开网格)。

    思路:

    对于这种问题,首先就是要处理好边界问题,之后递推即可。

     1 #include<iostream> 
     2 #include<string>
     3 #include<cstring>
     4 #include<algorithm>
     5 using namespace std;
     6 
     7 int n;
     8 int a[105][105];
     9 int d[105][105];
    10 
    11 int main()
    12 {
    13     //freopen("D:\txt.txt", "r", stdin);
    14     while (cin >> n && n)
    15     {
    16         for (int i = 1; i <= n; i++)
    17         for (int j = 1; j <= n; j++)
    18             cin >> a[i][j];
    19         d[1][1] = a[1][1];
    20         //处理边界
    21         for (int i = 2; i <= n; i++)
    22             d[i][1] = d[i - 1][1] + a[i][1];
    23         for (int i = 2; i <= n; i++)
    24             d[1][i] = d[1][i - 1] + a[1][i];
    25 
    26         for (int i = 2; i <= n;i++)
    27         for (int j = 2; j <= n; j++)
    28             d[i][j] = min(d[i - 1][j] + a[i][j], d[i][j - 1] + a[i][j]);
    29         cout << d[n][n] << endl;
    30     }
    31     return 0;
    32 }
  • 相关阅读:
    hdu 1869 六度分离
    hdu 1181 变形课
    hdu 1874 畅通工程续(Floyd)
    07-图5. 旅游规划(25)
    hdu 2544 最短路
    hdu 1874 畅通工程续
    00-自测5. Shuffling Machine (20)
    程序员高效率工作必备工具
    Beyond Compare 如何进行韩文比较
    Beyond Compare如何展开所有子文件夹
  • 原文地址:https://www.cnblogs.com/zyb993963526/p/6385092.html
Copyright © 2011-2022 走看看