查看: 2334|回復: 0
打印 上一主題 下一主題

[UVa] 10062 - Tell me the frequencies!

[複製鏈接]
  • TA的每日心情
    鬱悶
    2015-5-15 22:38
  • 簽到天數: 33 天

    [LV.5]常住居民I

    75

    主題

    302

    帖子

    766

    積分

    版主

    TFcis - 105 附設監工官

    Rank: 7Rank: 7Rank: 7

    積分
    766

    台南一中資訊社程式設計達人 - 2014

    跳轉到指定樓層
    樓主
    發表於 2014-4-30 23:41:25 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

    趕快加入我們來參與討論吧!

    您需要 登錄 才可以下載或查看,沒有帳號?加入我們

    x
    本帖最後由 jd3 於 2014-4-30 23:52 編輯

    題意:計算該行字串字符出現次數,並依照出現次數排序,若次數相同則優先輸出ASCII碼較大的

    注意事項:1.每筆測資之間都有空行,首行不空、末行不空
                      2.輸入字串含有空格,如果只輸入換行也要輸出空白行作為間隔

    /*
            AC
            15 ms
    */

    #include<iostream>
    #include<cstdio>
    #include<algorithm>

    using namespace std;


    struct Freq
    {
            int sign;
            int time;
    };



    inline bool operator < (const Freq &f1, const Freq &f2)
    {
            if(f1.time != f2.time)
                    return f1.time < f2.time;
            return f1.sign > f2.sign;
    }


    int main()
    {
            char str[5000];
            Freq list[305];
                   
            bool first = true;
            
            while(fgets(str,2000,stdin))
            {
                    if(first)
                            first = false;
                    else
                            putchar('\n');
                    for(int i = 0 ; i < 300 ; i++)
                    {
                            list[i].sign = i;
                            list[i].time = 0;
                    }
                   
                   
                    int len = 0;
                    for(int i = 0 ; (str[i]!='\n' && str[i]!='\0') ; i++)
                    {
                            len++;
                            list[str[i]].time++;
                    }
                   
                    sort(list,list+300);
                   
                   
                    for(int i = 0 ; i < 300 ; i++)
                            if(list[i].time > 0)
                                    printf("%d %d\n", list[i].sign, list[i].time);
                   
                   
            }
            return 0;
    }

    評分

    參與人數 1金幣 +2 收起 理由
    Sylveon + 2

    查看全部評分

    <這是個人簽名欄位>
    回復

    使用道具 檢舉

    您需要登錄後才可以回帖 登入 | 加入我們

    本版積分規則

    快速回覆 返回頂部 返回列表