题目链接: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. Android app 别用中文名

    /************************************************************************* * Android app 别用中文名 * 说明: ...

  2. context-param引发spring容器以及servlet容器的关联

    转自:http://blog.csdn.net/liaoxiaohua1981/article/details/6759206 格式定义: [html] view plaincopy <cont ...

  3. The Robust Fuzzy C-means

    摘要: 基于FCM的在图像处理方面对噪声敏感的不足,本文通过引入空间模型建立空间模糊C均值聚类提高算法的鲁棒性,在此基础上,结合抑制式对算法进一步优化.最后,给图像加不同程度的噪声,通过MATLAB编 ...

  4. PHP校验ISBN码的函数

    国际标准书号(International Standard Book Number,ISBN:拟发音is-ben),是国际通用的图书或独立的出版物(除定期出版的期刊)代码.出版社可以通过国际标准书号清 ...

  5. Informatica9.6.1在Linux Red Hat 5.8上安装遇到的有关问题整理_3

    3.Repository Service启动后的页面编码问题 1)错误信息: 2)原因分析及解决步骤 原因分析: informatica产品安装背后AdminConsole的Code page默认为U ...

  6. g++

    用g++编译程序时,-l 与-L各是什么意思?还有-I -l 表示:编译程序到系统默认路进搜索,如果找不到,到当前目录,如果当前目录找不到,则到LD_LIBRARY_PATH等环境变量置顶的路进去查找 ...

  7. 1、android源代码下载与跟踪

     学习Android源代码的目的 理解Android API查找API(Activity.Content Provider等) 高级应用开发(ROM定制)  在不同平台下载Android源代码 W ...

  8. cocos2dx 2.x 版本+Windows+ADT Bundle 配置

    昨天解决了cocos2dx 3.x版本+Windows+ADT Bundle的配置,今天来解决cocos2dx 2.x版本的配置. 整体来说,2.x的配置相对麻烦一点,不过一旦解决了,就一路畅通无阻了 ...

  9. 使用json格式的数据进行通信

    4 Java对象转换成JSON 4.1 问题 将Java对象转换成符合JSON格式的字符串,并测试. 4.2 方案 使用与json-lib.jar相关的jar文件完成类型的转换. 4.3 步骤 步骤一 ...

  10. spring实例化bean的方式

    1.使用类构造器实现实例化(bean的自身构造器) <bean id = "orderService" class="cn.itcast.OrderServiceB ...