zoukankan      html  css  js  c++  java
  • LOI 54 成立一周年纪(zuo)念(si)

    ---恢复内容开始---

    本来今天双向BFS题解都写了一半了,忘保存,然后关了,所以就。。。。。。呵呵

    然后,今天是LOI 54成立一周年(或许吧,时间不是太精确)。

    so,今天不写题解了,作死啊。。。。。。。。

    今天有一道题还没A,但是快了,毕竟,string-findnext还不会。

    算了,不说了,贴个代码草草收场吧。

    题目:

    1099 字串变换

    2002年NOIP全国联赛提高组

    时间限制: 1 s
    空间限制: 128000 KB
    题目等级 : 黄金 Gold
     
     
     
    题目描述 Description

    已知有两个字串 A$, B$ 及一组字串变换的规则(至多6个规则):
         A1$ -> B1$
         A2$ -> B2$
      规则的含义为:在 A$中的子串 A1$ 可以变换为 B1$、A2$ 可以变换为 B2$ …。
        例如:A$='abcd' B$='xyz'
      变换规则为:
        ‘abc’->‘xu’ ‘ud’->‘y’ ‘y’->‘yz’

      则此时,A$ 可以经过一系列的变换变为 B$,其变换的过程为:
       ‘abcd’->‘xud’->‘xy’->‘xyz’

      共进行了三次变换,使得 A$ 变换为B$。

    输入描述 Input Description

    输入格式如下:

       A$ B$
       A1$ B1$
       A2$ B2$  |-> 变换规则
       ... ... / 
      所有字符串长度的上限为 20。

    输出描述 Output Description

    若在 10 步(包含 10步)以内能将 A$ 变换为 B$ ,则输出最少的变换步数;否则输出"NO ANSWER!"

    样例输入 Sample Input

    abcd xyz
    abc xu
    ud y
    y yz

    样例输出 Sample Output

    3

    数据范围及提示 Data Size & Hint

    hehe 

    80分代码(有个bug以后再说):

     1 #include<iostream>
     2 #include<cstring>
     3 #include<cstdio>
     4 #include<queue>
     5 using namespace std;
     6 struct state
     7 {
     8     string a;
     9     int dep;
    10 }fir[5010],las[5010];
    11 int cnt=1;
    12 string s[8],t[8];
    13 int lens[8],lent[8];
    14 void bfs()
    15 {
    16     int head1,tail1,head2,tail2;
    17     head1=tail1=head2=tail2=1;
    18     while(head1<=tail1 && head2<=tail2)
    19     {
    20         if (fir[head1].dep+las[head2].dep>10)
    21         {
    22             printf("NO ANSWER!
    ");
    23             return ;
    24         }
    25         for(int i=1;i<=cnt;i++)
    26         {
    27             int pos=fir[head1].a.find(s[i]);
    28             if(pos!=string::npos)
    29             {
    30                 string ss="";
    31                 for(int j=0;j<pos;j++)ss+=fir[head1].a[j];
    32                 ss+=t[i];
    33                 for(int j=pos+lens[i];j<fir[head1].a.length();j++)ss+=fir[head1].a[j];
    34                 tail1++;
    35                 fir[tail1].a=ss;
    36                 fir[tail1].dep=fir[head1].dep+1;
    37           //      cout << fir[tail1].a << endl;
    38                 for (int k=1;k<=tail2;k++)
    39                     if (fir[tail1].a==las[k].a)
    40                     {
    41                        printf("%d
    ",fir[tail1].dep+las[k].dep);
    42                        return;
    43                     }
    44             }
    45         }
    46         head1++;
    47         for(int i=1;i<=cnt;i++)
    48         {
    49             int pos=las[head2].a.find(t[i]);
    50             if(pos!=string::npos)
    51             {
    52                 string ss="";
    53                 for(int j=0;j<pos;j++)ss+=las[head2].a[j];
    54                 ss+=s[i];
    55                 for(int j=pos+lent[i];j<las[head2].a.length();j++)ss+=las[head2].a[j];
    56                 tail2++;
    57                 las[tail2].a=ss;
    58                 las[tail2].dep=las[head2].dep+1;
    59             //    cout << las[tail2].a << endl;
    60                 for (int k=1;k<=tail1;k++)
    61                     if (fir[k].a==las[tail2].a)
    62                     {
    63                        printf("%d
    ",fir[k].dep+las[tail2].dep);
    64                        return;
    65                     }
    66             }
    67         }
    68         head2++;
    69     }
    70     printf("NO ANSWER!
    ");
    71 }
    72 int main()
    73 {
    74     cin>>fir[1].a>>las[1].a;
    75     fir[1].dep=las[1].dep=0;
    76     while(cin>>s[cnt]>>t[cnt])
    77     {
    78         lens[cnt]=s[cnt].length();
    79         lent[cnt]=t[cnt].length();
    80         cnt++;
    81     }
    82     cnt--;
    83     bfs();
    84 }
    View Code
  • 相关阅读:
    How To Install a 2 Finger Gripper on ABB Robots
    Guide: How to Set Up I/O on an ABB Robot with an IRC5 Controller
    SIGVerse
    unity与ROS SIGVerse 仿真
    论文阅读:Automated acquisition of structured, semantic models of manipulation activities from human VR demonstration
    Python2.7+ROS环境:AttributeError:‘module’ has no attribute ‘CALIB_HAND_EYE_TSAI
    Qt音视频开发39-人脸识别在线版
    Qt音视频开发38-USB摄像头解码linux方案
    Qt音视频开发37-USB摄像头解码ffmpeg方案
    由浅入深讲述MVVM
  • 原文地址:https://www.cnblogs.com/Skyvot/p/4046185.html
Copyright © 2011-2022 走看看