码迷,mamicode.com
首页 > 其他好文 > 详细

B - Snow Walking Robot

时间:2020-01-13 22:04:10      阅读:69      评论:0      收藏:0      [点我收藏+]

标签:closed   none   有一个   char   onclick   print   最简   spl   col   

题意:给出一段表方向的字符串,u、d、l、r分别表示向上、向下、向左、向右,让你重新排列,使其走出去再回到原点,除了原点能走两次以外其他点都只能走一次,输              出走的次数和走法。

思路:最简单的走法:就是绕一圈,先全是上,再全是右,全是下,全是左,即上的次数==下的次数,左的次数==右的次数,求两组对应方向的较小值,两值之和的两倍            即是走的次数。

   有一个方向出现次数是0,则对应的反方向则也为0,另外两个方向就只能各一个,例如:上出现次数是0,则只有一种情况,向左走,再向右走回原点,结束。

技术图片
#include<stdio.h>
#include<algorithm>
#include<string.h>
#include<math.h>
using namespace std;
int main(){
        int q,l,r,u,d,hmin,smin,i;
        char a[int(1e5+5)];
        while(~scanf("%d%*c",&q)){
                while(q--){
                        gets(a);
                        l=r=u=d=0;
                        for(i=0;a[i]!=\0;i++){
                                if(a[i]==U) u++;
                                if(a[i]==D) d++;
                                if(a[i]==L) l++;
                                if(a[i]==R) r++;
                        }
                        if(u==0||d==0){
                                if(l!=0&&r!=0){
                                        printf("2\n");
                                        printf("LR");
                                }else   printf("0");
                        }else if(l==0||r==0){
                                if(u!=0&&d!=0){
                                        printf("2\n");
                                        printf("UD");
                                }else   printf("0");
                        }else{
                                if(u>d) smin=d;
                                else    smin=u;
                                if(l>r) hmin=r;
                                else    hmin=l;
                                printf("%d\n",2*(smin+hmin));
                                for(i=0;i<smin;i++)
                                        printf("U");
                                for(i=0;i<hmin;i++)
                                        printf("R");
                                for(i=0;i<smin;i++)
                                        printf("D");
                                for(i=0;i<hmin;i++)
                                        printf("L");
                        }
                        printf("\n");
                }
        }
}
View Code

 

   

B - Snow Walking Robot

标签:closed   none   有一个   char   onclick   print   最简   spl   col   

原文地址:https://www.cnblogs.com/DreamingBetter/p/12189445.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!