题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5402

类似于黑白棋盘,有的格子是可以不走的,有的格子是不能不走的,对于m或n中有一个奇数的情况,

所有的数都可以走到,当m和n都是偶数的时候,则需要分情况讨论,两行缩成一行走,

从而走遍可以走的数。m=1且n=1的时候需要特判

 #include<stdio.h>
 #include<cstring>
 ;
 int main(){
     int n, m;
     int sum;
     int maze[MAXN][MAXN];
 //    freopen("e.txt","r",stdin);
     while(~scanf("%d%d",&n,&m)){
         sum = ;
         memset(maze,,sizeof(maze));
         ; i < n; ++i){
             ; j < m; ++j){
                 scanf("%d",&maze[i][j]);
                 sum += maze[i][j];
             }
         }
          && m == ){
             printf("%d\n",sum);
             printf("R\n");
             continue;
         }
          ==  ){
             printf("%d\n",sum);
             ; i < n; ++i){
                 ; j < m; ++j){
                      ){
                         printf("D");
                         continue;
                     }
                      == )
                         printf("R");
                     else
                         printf("L");
                 }
                 )
                     printf("D");
             }
             printf("\n");
             continue;
         }
          ==  ){
             printf("%d\n",sum);
             ; i < m; ++i){
                 ; j < n; ++j){
                      == )
                         printf("D");
                     else
                         printf("U");
                 }
                 )
                     printf("R");
             }
             printf("\n");
             continue;
         }
         else{
             ;
             int pi, pj;
             ; i < n; ++i){
                 ; j < m; ++j){
                      ==  && (maze[i][j] < _min)){
                         _min = maze[i][j];
                         pi = i;
                         pj = j;
                     }
                 }
             }
 //            找到最小值
             printf("%d\n",sum-_min);
              ==  ){
                 ; i < pi-; ++i ){
                     ; j < m-; ++j){
                          == )
                             printf("R");
                         else
                             printf("L");
                     }
                     )
                         printf("D");
                 }
             }
 //            如果是奇数行出现,前pi-2行按规律走
             else{
                 ; i < pi; ++i ){
                     ; j < m-; ++j){
                          == )
                             printf("R");
                         else
                             printf("L");
                     }
                     )
                         printf("D");
                 }
             }
 //            如果是偶数行出现,前pi-1行按规律走
             ; i < pj; ++i){
                  == )
                     printf("D");
                 else
                     printf("U");
                 printf("R");
             }
              )
                 printf("R");
             ; i < m; ++i){
                  == )
                     printf("D");
                 else
                     printf("U");
                 )
                     printf("R");
             }
              ==  && pi +  == n) && !( pi %  ==  && pi +  == n ))
                 printf("D");
 //                两行变一行
              ==  ){
                 ; i < n; ++i ){
                     ; j < m-; ++j){
                          == )
                             printf("R");
                         else
                             printf("L");
                     }
                     )
                         printf("D");
                 }
             }
             else{
                 ; i < n; ++i ){
                     ; j < m; ++j){
                          == )
                             printf("R");
                         else
                             printf("L");

                     }
                     )
                         printf("D");
                 }
             }
         }
         printf("\n");
     }
 }

hdoj 5402 Travelling Salesman Problem的更多相关文章

  1. HDOJ 5402 Travelling Salesman Problem 模拟

    行数或列数为奇数就能够所有走完. 行数和列数都是偶数,能够选择空出一个(x+y)为奇数的点. 假设要空出一个(x+y)为偶数的点,则必须空出其它(x+y)为奇数的点 Travelling Salesm ...

  2. 构造 - HDU 5402 Travelling Salesman Problem

    Travelling Salesman Problem Problem's Link: http://acm.hdu.edu.cn/showproblem.php?pid=5402 Mean: 现有一 ...

  3. HDU 5402 Travelling Salesman Problem (构造)(好题)

    大致题意:n*m的非负数矩阵,从(1,1) 仅仅能向四面走,一直走到(n,m)为终点.路径的权就是数的和.输出一条权值最大的路径方案 思路:因为这是非负数,要是有负数就是神题了,要是n,m中有一个是奇 ...

  4. HDU 5402 Travelling Salesman Problem (模拟 有规律)(左上角到右下角路径权值最大,输出路径)

    Travelling Salesman Problem Time Limit: 3000/1500 MS (Java/Others)    Memory Limit: 65536/65536 K (J ...

  5. HDU 5402 Travelling Salesman Problem(棋盘染色 构造 多校啊)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5402 Problem Description Teacher Mai is in a maze wit ...

  6. hdu 5402 Travelling Salesman Problem(大模拟)

    Problem Description Teacher Mai ,) to the bottom right corner (n,m). He can choose one direction and ...

  7. HDU 5402 Travelling Salesman Problem(多校9 模拟)

    题目链接:pid=5402">http://acm.hdu.edu.cn/showproblem.php?pid=5402 题意:给出一个n×m的矩阵,位置(i.j)有一个非负权值. ...

  8. HDU 5402 : Travelling Salesman Problem

    题目大意:n*m的格子,从左上角走到右下角,每个格子只能走一遍,每个格子上有一个非负数,要让途径的数字和最大,最后要输出路径 思路:显然茹果n,m有一个是奇数的话所有格子的数字都能被我吃到,如果都是偶 ...

  9. hdu 5402 Travelling Salesman Problem (技巧,未写完)

    题意:给一个n*m的矩阵,每个格子中有一个数字,每个格子仅可以走一次,问从(1,1)走到(n,m) 的路径点权之和. 思路: 想了挺久,就是有个问题不能短时间证明,所以不敢下手. 显然只要n和m其中一 ...

随机推荐

  1. Linux Autotools

    /********************************************************************** * Linux Autotools * 说明: * 我们 ...

  2. AIX 第5章 指令记录

    AIX引导过程 AIX不同引导模式 AIX的关闭 AIX的计划任务 AIX服务的管理 AIX的常用日志 POST=Power On Self Test   rc.boot 的三次调用 /etc/ini ...

  3. 多线程&多进程解析:Python、os、sys、Queue、multiprocessing、threading

    当涉及到操作系统的时候,免不了要使用os模块,有时还要用到sys模块. 设计到并行程序,一般开单独的进程,而不是线程,原因是python解释器的全局解释器锁GIL(global interpreter ...

  4. activity_main.xml与fragment_main.xml

    见: http://blog.sina.com.cn/s/blog_3e28c8a50101fqvw.html http://blog.sina.com.cn/s/blog_3e28c8a50101f ...

  5. nodejs模拟http-post文件的方法示例

    var fs = require("fs"); var http = require('http'); function PostFileToServer(sFileName, d ...

  6. 嵌入式 Linux下curl库API简单介绍

    1:CURLcode curl_global_init(long flags); 这个函数全局需要调用一次(多次调用也可以,不过没有必要), 所以这也是把Curlplus设计成单体类的原因,curl_ ...

  7. C# DataGridView的初始化

    动态添加列和行 方法一 通过手动添加Datatable,再绑定dataGridView DataTable dt = new DataTable();//建立个数据表 dt.Columns.Add(n ...

  8. DuiLib消息处理剖析

    本来想自己写写duilib的消息机制来帮助duilib的新手朋友,不过今天发现已经有人写过了,而且写得很不错,把duilib的主干消息机制都说明了,我就直接转载过来了,原地址:http://blog. ...

  9. ASP.NET 如何做出简单的验证码

    如果说要做验证码,那不得不提的就是GDI+绘图了.我们都知道验证码是以图片形式展示的,而且是动态生成的,这样就需要我们去画出它. 科普一下,什么是GDI+? GDI+是图形设备接口(GDI)的高级版本 ...

  10. slowhttps安装及使用心得

    运行及安装环境,kali. 到googlecode上下载安装包,cd到安装目录./configure 运行完毕后输入make 结束后make install 简单点就直接apt-get install ...