• PC110304/UVA850


    这题目WA了好几次,主要是我没有理解清楚No solution.这个情况。

    如果在match原文做好了,基本map一下就能过了。

    与原句match的条件就是:

    1.出现了26个字母

    2.该空格的地方要空格,不该空格的地方不要空格

    3.该相同的地方相同,不该相同的地方不相同。

    ~真的是好久不做PC题目,输入输出都不习惯了~弄得好郁闷。

    /*******************************************************************************/
    /* OS           : 3.2.0-58-generic #88-Ubuntu SMP Tue Dec 3 UTC 2013 GNU/Linux
     * Compiler     : g++ (GCC)  4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5)
     * Encoding     : UTF8
     * Date         : 2014-03-30
     * All Rights Reserved by yaolong.
    *****************************************************************************/
    /* Description: ***************************************************************
    *****************************************************************************/
    /* Analysis: ******************************************************************
    *****************************************************************************/
    /*****************************************************************************/
    
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<map>
    #include<vector>
    using namespace std;
    string KN="the quick brown fox jumps over the lazy dog";
    int lenKN=KN.length();
    char p[27];
    bool isMatch(string s)
    {
        int i,j;
        if(s[3]!=' '||s[9]!=' '||s[15]!=' '||s[ 19]!=' '||s[25]!=' '|| s[30]!=' '||s[34]!=' '||s[39]!=' ')
           return 0;
    
        memset(p,0,sizeof(27));
        for(i=0;i<s.length();i++){
           if(s[i]!=' ')
           p[s[i]-'a']++;
        }
        int res=0;
        for(i=0;i<26;i++){
           if(p[i]) res++;
        }
        if(res!=26) return 0;
        for(i=0;i<lenKN;i++){
           for(j=0;j<lenKN;j++){
              if(KN[i]==KN[j]&&s[i]!=s[j]){
                return 0;
              }
              if(KN[i]!=KN[j]&&s[i]==s[j]){
                return 0;
              }
    
           }
        }
    
    
        return 1;
    
    
    }
    int main()
    {
    
        int cases,i,j;
        vector<string> str;
        string tmp;
        map<char,char> mp;
        cin>>cases;
        getchar();
        getchar();
        int first=1;
        while(cases--)
        {
    
            if(first) first=0;
            else cout<<endl;
    
            mp.clear();
            str.clear();
    
            while(getline(cin,tmp)&&tmp.length())
            {
                str.push_back(tmp);
            }
            int siz=str.size();
    
            int flag=0;
            for(i=0; i<siz; i++)
            {
    
                if(str[i].length()==lenKN&&isMatch(str[i]))
                {
                    flag=1;
    
                    for(j=0; j<lenKN; j++)
                    {
                        mp[str[i][j]]=KN[j];
                    }
    
    
                }
            }
    
            if(flag)
            {
                for(i=0; i<siz; i++)
                {
                    for(j=0; j<str[i].length(); j++)
                        cout<<mp[str[i][j]];
    
                    cout<<endl;
    
                }
            }
            else cout<<"No solution.
    ";
    
    
    
    
        }
    
    
    
    
        return 0;
    
    }
    
    
    


  • 相关阅读:
    maven常用插件
    Java反编译工具:Java Decompiler
    好看的电影
    我说
    Fisher准则一维聚类
    Java获取函数参数名称
    推荐几个字体生成网站
    Python中的两种路径
    轻量级数据库简介
    Solr Wiki文档
  • 原文地址:https://www.cnblogs.com/dengyaolong/p/3697207.html
Copyright © 2020-2023  润新知