• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            ZOJ1225_Scramble Sort

            Posted on 2010-10-09 15:38 李東亮 閱讀(545) 評論(0)  編輯 收藏 引用

            該題在ZOJ上的題號是1225

            題目描述如下:

            Background
            In this problem you will be given a series of lists containing both words and numbers. The goal is to sort these lists in such a way that all words are in alphabetical order and all numbers are in numerical order. Furthermore, if the nth element in the list is a number it must remain a number, and if it is a word it must remain a word.
            Input
            The input will contain multiple lists, one per line. Each element of the list will be separated by a comma followed a space, and the list will be terminated by a period. The input will be terminated by a line containing only a single
            period.


            Output

            For each list in the input, output the scramble sorted list, separating each element of the list with a comma followed by a space, and ending the list with a period.


            Sample Input

            0.
            banana, strawberry, OrAnGe.
            Banana, StRaWbErRy, orange.
            10, 8, 6, 4, 2, 0.
            x, 30, -20, z, 1000, 1, Y.
            50, 7, kitten, puppy, 2, orangutan, 52, -100, bird, worm, 7, beetle.
            .
            Sample Output

            0.
            banana, OrAnGe, strawberry.
            Banana, orange, StRaWbErRy.
            0, 2, 4, 6, 8, 10.
            x, -20, 1, Y, 30, 1000, z.
            -100, 2, beetle, bird, 7, kitten, 7, 50, orangutan, puppy, 52, wor

                     本題不是難題,根據(jù)題意,只需把輸入中的數(shù)字和字符串分開,然后分別按照相應(yīng)的規(guī)則進(jìn)行排序,并記錄下第i個是數(shù)字或者是字符,最后按照記錄情況一次輸出相應(yīng)的元素即可。因?yàn)樾枰獙ψ址當(dāng)?shù)組進(jìn)行排序,因此第一印象是使用C++stringSTL中的sort函數(shù),但是結(jié)果卻因?yàn)閼械脤懸粋€排序函數(shù)多寫了很多代碼。

            具體代碼如下:

            #include <iostream>
            #include 
            <cstdio>
            #include 
            <cstdlib>
            #include 
            <string>
            #include 
            <cstring>
            #include 
            <algorithm>
            #include 
            <cctype>

            using namespace std;

            string s[80];
            int a[80];
            bool flag[80];
            char buf[80];
            bool cmp(string a, string b)
            {
                
            string tmpa = a;
                
            string tmpb = b;
                transform(a.begin(),a.end(), tmpa.begin(), ::tolower);
                transform(b.begin(),b.end(), tmpb.begin(), ::tolower);
                
            return tmpa < tmpb;
            }
            int main(void)
            {
                
            int alpha, num;
                
            string t;
                
            char *p;
                
            int i, j;
                
            int sign;
                
            int tmp;
                
            int k;
                
            int m, n;
                freopen(
            "in.txt""r", stdin);
                
            while (fgets(buf, 80, stdin) != NULL && buf[0!= '.')
                {
                    p 
            = buf;
                    i 
            = j = 0;
                    alpha 
            = num = 0;
                    k 
            = 0;
                    
            while (*!= '\n' && *!= '.')
                    {
                        
            while (*== ' ')
                            
            ++p;
                        sign 
            = 1;
                        
            if (*== '-' || isdigit(*p) || *== '+')
                        {
                            
            if (*== '-')
                            {
                                sign 
            = -1;
                                
            ++p;
                            }    
                            
            else if (*== '+')
                                
            ++p;
                            tmp 
            = 0;
                            
            while (*!= ',' && *!= '.')
                            {
                                tmp 
            = tmp*10 + (*p-'0');
                                
            ++p;
                            }
                            a[num
            ++= tmp*sign;
                            flag[k
            ++= false;
                        }    
                        
            else
                        {
                            i 
            = 0;
                            t 
            = "";
                            
            while (*!= ',' && *!= '.')
                            {
                                t 
            += *p;
                                
            ++p;
                                
            ++i;
                            }
                            s[alpha
            ++= t;
                            flag[k
            ++= true;
                        }
                        
            ++p;
                    }
                    sort(a, a
            +num);
                    sort(s, s
            +alpha, cmp);
                    m 
            = n  = 0;
                    
            if (!flag[0])
                    {
                        printf(
            "%d", a[0]);
                        
            ++m;
                    }
                    
            else
                    {
                        printf(
            "%s", s[0].c_str());
                        
            ++n;
                    }
                    
            for (i = 1; i < k; ++i)
                    {
                        
            if (!flag[i])
                        {
                            printf(
            ", %d", a[m]);
                            
            ++m;
                        }
                        
            else
                        {
                            printf(
            ", %s", s[n].c_str());
                            
            ++n;
                        }
                    }
                    printf(
            ".\n");
                }
                
            return 0;
            }


            只有注冊用戶登錄后才能發(fā)表評論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            posts - 12, comments - 1, trackbacks - 0, articles - 1

            Copyright © 李東亮

            久久99精品国产麻豆蜜芽| 热久久国产欧美一区二区精品| 精品国产一区二区三区久久| 合区精品久久久中文字幕一区| 日韩精品国产自在久久现线拍 | 久久久久人妻精品一区三寸蜜桃| 色欲综合久久躁天天躁蜜桃| 久久久精品人妻一区二区三区蜜桃 | 国产精品久久久久久久久久免费| 国产综合久久久久久鬼色| 亚洲欧美日韩中文久久| 久久精品国产99国产精品亚洲 | 一本色道久久综合亚洲精品| 四虎久久影院| 久久久这里有精品| 久久久久青草线蕉综合超碰| 精品久久久久久国产| 精品综合久久久久久97| 久久丫精品国产亚洲av不卡| 国产成人精品免费久久久久| 99久久久精品免费观看国产| 国产精品久久亚洲不卡动漫| 久久综合综合久久97色| 婷婷综合久久中文字幕| 久久精品国产99国产精品| 性欧美大战久久久久久久| 久久久久久久97| 国产精品久久久久国产A级| 久久99中文字幕久久| 久久久久国色AV免费看图片| 久久久久久久久久久久久久| 久久精品国产99久久久| 国产精品一区二区久久精品无码 | 久久九九有精品国产23百花影院| 久久99国产精品一区二区| 久久精品无码专区免费| yy6080久久| 久久精品成人免费网站| 亚洲欧美国产精品专区久久| 麻豆一区二区99久久久久| 精品久久久久久无码中文野结衣 |