B - Snow Walking Robot

Posted dreamingbetter

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了B - Snow Walking Robot相关的知识,希望对你有一定的参考价值。

题意:给出一段表方向的字符串,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]!=;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
");
                                        printf("LR");
                                }else   printf("0");
                        }else if(l==0||r==0){
                                if(u!=0&&d!=0){
                                        printf("2
");
                                        printf("UD");
                                }else   printf("0");
                        }else{
                                if(u>d) smin=d;
                                else    smin=u;
                                if(l>r) hmin=r;
                                else    hmin=l;
                                printf("%d
",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("
");
                }
        }
}
View Code

 

   

以上是关于B - Snow Walking Robot的主要内容,如果未能解决你的问题,请参考以下文章

*Leetcode 874. Walking Robot Simulation

874. Walking Robot Simulation

Leetcode_easy874. Walking Robot Simulation

874.Walking Robot Simulation(list不可被哈希)

算法:模拟机器人走路874. Walking Robot Simulation

[LeetCode] Walking Robot Simulation 走路机器人仿真