zoukankan      html  css  js  c++  java
  • uva-10785-模拟水题

    模拟题:

    1• The name has a predefined length N.名字长度N
    2• The vowel value and consonant value of the name must be kept minimum.元音部分值的总和和辅音部分值的最小
    3• To make the pronunciation of the name possible vowels and consonants are placed in alternate
    positions. Actually vowels are put in odd positions and consonants are put in even positions. The
    leftmost letter of a name has position 1; the position right to it is position 2 and so on.元音在奇数位置,辅音在偶数位置,第一个字母位置是1
    4• No consonants can be used in a name more than five times and no vowels can be used in a name
    more than twenty-one times 同一个元音字母最多可以用21次,辅音5次
    5• Following the rules and limitations above the name must be kept lexicographically smallest. Please
    note that the numerologists first priority is to keep the vowel and consonant value minimum and
    then to make the name lexicographically smallest.字母序最小

    还要五个题就可以做下一章节了

    #include <iostream>
    #include<memory.h>
    #include<stdio.h>
    using namespace std;
    
    char vowel[] = { 'A', 'U', 'E', 'O', 'I' };
    char c[] = { 'J', 'S', 'B', 'K', 'T', 'C', 'L', 'D', 'M', 'V', 'N', 'W', 'F',
            'X', 'G', 'P', 'Y', 'H', 'Q', 'Z', 'R' };
    
    void sort(int l, char cc[])
    {
        for (int i = 0; i < l; i++)
        {
            for (int j = 1; j < l-i; j++)
            {
                if (cc[j - 1] > cc[j])
                {
                    char c = cc[j - 1];
                    cc[j - 1] = cc[j];
                    cc[j] = c;
                }
            }
        }
    
    }
    
    int main()
    {
        freopen("d:\1.txt", "r", stdin);
        int n;
        cin >> n;
        int used[100];
        int t = 1;
        while (n--)
        {
            memset(used, 0, sizeof(used));
            //N位
            //value最小
            //元音奇数位,常量偶数位
            //元音最大不超过21,常量5
            //字典序最小
            string str = "";
            int m;
            cin >> m;
            int vi = 0, ci = 0;
            char vv[200];
            char cc[200];
            int vl = 0;
            int cl = 0;
            for (int i = 1; i <= m; i++)
            {
                if (i % 2)
                {
                    //奇数位,元音
                    if (used[vowel[vi]] == 21)
                    {
                        vi++;
                    }
                    vv[vl++] = vowel[vi];
                    used[vowel[vi]]++;
                }
                else
                {
                    if (used[c[ci]] == 5)
                    {
                        ci++;
                    }
                    cc[cl++] = c[ci];
                    used[c[ci]]++;
                }
            }
    
             sort( vl,  vv);
             sort(cl,cc);
             vi = 0;
             ci = 0;
             for(int i = 1;i <=m;i++){
                 if(i%2)
                     str = str + vv[vi++];
                 else
                     str = str + cc[ci++];
             }
            cout << "Case " << t << ": " << str << endl;
            t++;
        }
        return 0;
    }
  • 相关阅读:
    Netty5.x中新增和值得注意的点(转载http://www.coderli.com/netty-5-new-and-noteworthy/)
    PAT A1143 Lowest Common Ancestor [二叉搜索树LCA]
    PAT A1136 A Delayed Palindrome [大数加法]
    PAT A1047 Student List for Course [字符串映射]
    PAT A1022 Digital Library [输入输出 STL]
    输入输出格式总结
    算法题面生词汇总
    PAT A1044 Shopping in Mars [二分]
    PAT A1010 Radix [二分]
    算法的时间复杂度分析
  • 原文地址:https://www.cnblogs.com/shuiyonglewodezzzzz/p/7325477.html
Copyright © 2011-2022 走看看