题目链接: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. BZOJ 1555 KD之死

    贪心,按t+w排序维护不一定放到拖车上的大根堆. #include<iostream> #include<cstdio> #include<cstring> #in ...

  2. 【自动化测试】Selenium - 定位

    http://easonhan007.github.io/selenium/2014/01/10/se-secret_01/ 你应该遵照这个规则来选择定位元素的属性.name > id > ...

  3. Linux用户(组)管理

    在linux中系统中,它并不认识帐号名称.它认识的是我们的帐号ID,帐号ID保存在/etc/passwd文件中.我们在登录linux主机时,在输入完帐号和密码时,linux会先查找/etc/passw ...

  4. 【转】Bootloader之uBoot简介(转)

    原文网址:http://blog.csdn.net/sadamoo/article/details/8139946 来自http://blog.ednchina.com/hhuwxf/1915416/ ...

  5. 使用Spring 3的@value简化配置文件的读取

    Spring 3支持@value注解的方式获取properties文件中的配置值,大简化了读取配置文件的代码. 1.在applicationContext.xml文件中配置properties文件 & ...

  6. PHP String函数分类

    1.查找字符位置函数: strpos  ($str,search,[int]):    查找search在$str中的第一次位置从int开始: stripos ($str,search,[int]): ...

  7. (win+linux)双系统,删除linux系统的条件下,删除grub引导记录,恢复windows引导

    //(hdx,y) (显示查找到的分区号)第一个数字指第几个硬盘,第二个指第几个分区.   一般我们是(hd0,0) \n Linux的分区已经被你从Windows中删除,系统启动后停在“grub&g ...

  8. Android应用开发学习—Toast使用方法大全

    Toast 是一个 View 视图,快速的为用户显示少量的信息. Toast 在应用程序上浮动显示信息给用户,它永远不会获得焦点,不影响用户的输入等操作,主要用于 一些帮助 / 提示. Toast 最 ...

  9. 搭建XMPP协议,实现自主推送消息到手机

    关于服务器端向Android客户端的推送,主要有三种方式: 1.客户端定时去服务端取或者保持一个长Socket,从本质讲这个不叫推送,这是去服务端拽数据.但是实现简单,主要缺点:耗电等 2.Googl ...

  10. $("#province").val();取不到select的值求解

    MVC下的razor视图开发中无法取到select的值问题求解 cshtml 如下 <select name="province" id="province&quo ...