这题是一道dp的水题,类似于数塔,从右向左倒着加上去,找到最小值,然后在从左到右输出路径。

#include"iostream"
#include"stdio.h"
#include"algorithm"
#include"string.h"
#include"string"
#include"cmath"
#include"queue"
#include"stack"
#include"map"
using namespace std;
const int mx=;
const int inf=;
int n,m;
int maze[mx][mx];
int MIN(int a,int b,int c)
{
int d=a<b?a:b;
return c<d?c:d;
}
void DP()
{
int i,j;
for(j=m-;j>=;j--)
{
for(i=;i<n;i++)
{
maze[i][j-]+=MIN(maze[(i+n-)%n][j],maze[i][j],maze[(i+)%n][j]);
}
}
}
void OUTPUT()
{
int i,j,min_length=inf,path;
for(i=;i<n;i++)
{
if(maze[i][]<min_length)
{
min_length=maze[i][];
path=i;
}
}
cout<<path+;
for(j=;j<m;j++)
{
int r=path;
int min_num=maze[path][j];
if(maze[(path+n-)%n][j]==min_num)
{
if((path+n-)%n<r) r=(path+n-)%n;
}
else if(maze[(path+n-)%n][j]<min_num)
{
min_num=maze[(path+n-)%n][j];
r=(path+n-)%n;
} if(maze[(path+)%n][j]==min_num)
{
if((path+)%n<r) r=(path+)%n;
}
else if(maze[(path+)%n][j]<min_num)
{
r=(path+)%n;
min_num=maze[(path+)%n][j];
}
path=r;
cout<<" "<<path+;
}
cout<<endl<<min_length<<endl;
}
int main()
{
// freopen("E:\\in.txt","r",stdin);
int i,j;
while(scanf("%d%d",&n,&m)==)
{
for(i=;i<n;i++)
{
for(j=;j<m;j++)
{
scanf("%d",&maze[i][j]);
}
}
DP();
OUTPUT();
}
return ;
}

uva116的更多相关文章

  1. UVa-116 Unidirectional TSP 单向旅行商

    题目 https://vjudge.net/problem/uva-116 分析 设d[i][j]为从(i,j)到最后一列的最小开销,则d[i][j]=a[i][j]+max(d[i+1][j+1], ...

  2. Uva116 Unidirectional TSP

    https://odzkskevi.qnssl.com/292ca2c84ab5bd27a2a91d66827dd320?v=1508162936 https://vjudge.net/problem ...

  3. UVA116 单向 DSP(多段图最短路)

    单向 DSP [题目链接]单向 DSP [题目类型]dp &题解: 紫书P271 这块的字典序排序我觉得挺厉害的,每次都把那3步sort一下,之后if (v< d[i][j]) 这块的小 ...

  4. 9-4 Unidirectional TSP uva116 (DP)

    题意:给一个n行m列矩阵    从第一列任意一个位置出发 每次往右 右上 右下三个方向走一格 直到最后一列   输出所类和的最小值和路径!! 最小值相同则输出字典序最小路径 很像一开始介绍的三角形dp ...

  5. UVa116 (单向TSP,多决策问题)

    /*----UVa1347 单向TSP 用d(i,j)表示从格子(i,j)出发到最后一列的最小开销 则在(i,j)处有三种决策,d(i,j)转移到d(i-1,j+1),d(i,j+1),d(i+1,j ...

  6. UVA116 Unidirectional TSP 单向TSP

    分阶段的DAG,注意字典序的处理和路径的保存. 定义状态d[i][j]为从i,j 出发到最后一列的最小花费,转移的时候只有三种,向上,向下,或平移. #include<bits/stdc++.h ...

  7. UVA 116 Unidirectional TSP 经典dp题

    题意:找最短路,知道三种行走方式,给出图,求出一条从左边到右边的最短路,且字典序最小. 用dp记忆化搜索的思想来考虑是思路很清晰的,但是困难在如何求出字典序最小的路. 因为左边到右边的字典序最小就必须 ...

  8. UVa 116 单向TSP(多段图最短路)

    https://cn.vjudge.net/problem/UVA-116 题意:给出m行n列的整数矩阵,从第一列任何一个位置出发每次往右,右上或右下走一格,最终到达最后一列,要求经过的整数之和最小. ...

  9. 简单Dp----最长公共子序列,DAG最长路,简单区间DP等

    /* uva 111 * 题意: * 顺序有变化的最长公共子序列: * 模板: */ #include<iostream> #include<cstdio> #include& ...

随机推荐

  1. mac 上的 python

    1.mac 上的 python 自己感觉很乱 1.额外安装的 自带的 python27-apple /System/Library/Frameworks/Python.framework/Versio ...

  2. PHP变量入门教程(2)超全局变量,总共9个

    PHP 超全局变量 $GLOBALS 包含一个引用指向每个当前脚本的全局范围内有效的变量.该数组的键标为全局变量的 名称.从 PHP 3 开始存在 $GLOBALS 数组. $_SERVER 变量由 ...

  3. C/C++的开发环境安装

    sudo apt-get install gcc sudo apt-get install g++ sudo apt-get install cmake sudo apt-get install ma ...

  4. POJ2914 (未解决)无向图最小割|Stoer-Wagner算法|模板

    还不是很懂,贴两篇学习的博客: http://www.hankcs.com/program/algorithm/poj-2914-minimum-cut.html http://blog.sina.c ...

  5. column css3 列宽

    column-count 属性规定元素应该被分隔的列数: div { -moz-column-count:3; /* Firefox */ -webkit-column-count:3; /* Saf ...

  6. tp5 中 model 的聚合查询

    方法 说明 Count 统计数量,参数是要统计的字段名(可选) Max 获取最大值,参数是要统计的字段名(必须) Min 获取最小值,参数是要统计的字段名(必须) Avg 获取平均值,参数是要统计的字 ...

  7. Modbus总线CRC16效验算法C语言

    unsigned short CRC16_Modbus ( unsigned char *pdata, int len){ unsigned short crc=0xFFFF; int i, j; f ...

  8. 八皇后问题_Qt_界面程序实现

    //核心代码如下 //Queen--放置皇后 #include "queue.h" queue::queue() { *; ; this->board = new bool[ ...

  9. Jquery表单提交后获取返回Json值

    1.给form添加id值: <form action="/News/SaveMessage" method="post" accept-charset=& ...

  10. AngularJS 模块

    模块定义了一个应用程序. 模块是应用程序中不同部分的容器. 模块是应用控制器的容器. 控制器通常属于一个模块. 你可以通过 AngularJS 的 angular.module 函数来创建模块: &l ...