zoukankan      html  css  js  c++  java
  • B. Suffix Structures 模拟吧,情况比較多要想周全

    这道题须要考虑的情况比較多,flag1表示情况是:b数组里有的字母而a里没有和b里面的同一个字母个数比a里面的多

    flag2表示情况:b里面的左右字母能不能在a中同等顺序的存在

    flag3表示情况:a里面同一个字母的个数与b里面是否同样

    #include<iostream>
    #include<stdio.h>
    #include<string.h>
    using namespace std;
    int main(){
     //   freopen("in.txt","r",stdin);
        char a[105],b[105];
        int coua[50],coub[50];
        while(cin>>a>>b){
            for(int i=0;i<50;i++)
                coua[i]=coub[i]=0;
            int lena=strlen(a);
            int lenb=strlen(b);
            for(int i=0;i<lena;i++)
                coua[a[i]-'a']++;
            for(int i=0;i<lenb;i++)
                coub[b[i]-'a']++;
            int flag1=0,flag2=0,flag3=0;
            for(int i=0;i<50;i++){
                if((coub[i]!=0 && coua[i]==0)||coub[i]>coua[i]){
                    flag1=1;
                }
                if(coub[i]!=coua[i])
                    flag3=1;
            }
            for(int i=0,j=0;i<lenb,j<lena;){
                if(b[i]==a[j]){
                    i++;j++;
                }else j++;
                if(i==lenb)
                    flag2=1;
            }
            if((flag1==1 || lena<lenb)||((lena==lenb)&&flag3==1))
                cout<<"need tree"<<endl;
            if(flag1==0 && flag2==0 && lena>lenb )
                cout<<"both"<<endl;
            if(flag1==0 && flag2==1)
                cout<<"automaton"<<endl;
            if(flag1==0 && flag2==0 && lena==lenb && flag3==0)
                cout<<"array"<<endl;
    
        }
    }
    

  • 相关阅读:
    racket eval
    mex不兼容
    【转】雷军 程序员随想
    UBoot 目录结构和编译过程
    远程监控web开发
    STL容器[08]
    STL容器[07]
    STL容器[17]
    STL容器[06]
    stl.map使用总结
  • 原文地址:https://www.cnblogs.com/cynchanpin/p/6753534.html
Copyright © 2011-2022 走看看