• B


    题意:给出一段表方向的字符串,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

       

  • 相关阅读:
    SDK安装教程
    appscan下载
    app测试-兼容性测试与云测试技术
    app测试之耗电量测试
    App测试1-App测试概述
    app测试2--monkey稳定性测试
    app测试1--常用adb命令
    常用dos命令
    jmeter(二)脚本录制
    jmeter基础介绍
  • 原文地址:https://www.cnblogs.com/DreamingBetter/p/12189445.html
Copyright © 2020-2023  润新知