• <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>
            yoyouhappy的秘密花園
            歡迎來到我的秘密花園^^
            posts - 16,comments - 33,trackbacks - 0

            POJ 1002一直WA,都要瘋了。。。
            題意就是輸入幾組字符串,按照給出的形式轉(zhuǎn)換為統(tǒng)一格式,然后輸出出現(xiàn)多于一次的字符串出現(xiàn)的次數(shù),輸出時按照升序排列。很簡單,但是做的很郁悶,一直WA
            貼個代碼紀念,下邊是AC的代碼~~~

             

              1#include<iostream>
              2#include<vector>
              3#include<string>
              4#include<algorithm>
              5using namespace std;
              6int deal(char c)
              7{
              8    int n;
              9switch(c)
             10{
             11case'A':
             12case'B':
             13case'C':
             14    n=2;break;
             15case'D':
             16case'E':
             17case'F':
             18    n=3;break;
             19case'G':
             20case'H':
             21case'I':
             22    n=4;break;
             23case'J':
             24case'K':
             25case'L':
             26    n=5;break;
             27case'M':
             28case'N':
             29case'O':
             30    n=6;break;
             31case'P':
             32case'R':
             33case'S':
             34    n=7;break;
             35case'T':
             36case'U':
             37case'V':
             38    n=8;break;
             39case'W':
             40case'X':
             41case'Y':
             42    n=9;break;
             43
             44}

             45return n;
             46}

             47int main()
             48{
             49    int n,i,j,base=1000000,count=1,result=1;
             50    int yoyo=0;
             51    long int sum=0;
             52    string s;
             53    vector<long int>v;
             54    cin>>n;
             55    for(i=0;i<n;i++)
             56    {
             57        cin>>s;
             58        for(j=0;j<s.length();j++)
             59        {   if(base<1)break;
             60            if(s[j]=='-')continue;
             61            if(s[j]>=48&&s[j]<=57)
             62            {
             63            sum+=base*(s[j]-'0');
             64            base/=10;
             65            }

             66            if(s[j]>='A'&&s[j]<='Z')
             67            {
             68                sum+=base*deal(s[j]);
             69                base/=10;
             70            }

             71
             72        }

             73        v.push_back(sum);
             74        sum=0;
             75        base=1000000;
             76        s.empty();
             77    }

             78    sort(v.begin(),v.end());
             79    
             80/*
             81
             82    for(i=0;i<n;i++)
             83    {
             84        for(j=i+1;j<n;j++)
             85        {
             86            if(v[j]==v[i])
             87            {
             88                count++;
             89                continue;
             90            }
             91            
             92                break;
             93        }
             94        if(count)
             95        {
             96            cout<<(v[i]/10000)<<"-"<<(v[i]%10000)<<" "<<count+1<<endl;
             97            result=1;
             98        }
             99        i=j;
            100        count=0;
            101
            102    }
            103    if(result==0)cout<<"No duplicates."<<endl;
            104    */

            105
            106
            107
            108    result=1;
            109    for(i=1;i<n;i++)
            110    {
            111        if(v[i]==v[i-1])
            112            count++;
            113        if(count>1&&v[i]!=v[i-1])
            114        {
            115//cout<<(int)(v[i-1]/10000)<<"-"<<(v[i-1]%10000)<<" "<<count<<endl;
            116        printf("%03d-%04d %d\n", v[i-1]/10000, v[i-1]%10000, count);
            117        count=1;
            118        result=0;
            119        }

            120    }

            121    if(v[i-1]==v[i-2]&&count>1)
            122    {
            123//cout<<(int)(v[i-1]/10000)<<"-"<<(v[i-1]%10000)<<" "<<count<<endl;
            124        printf("%03d-%04d %d\n", v[i-1]/10000, v[i-1]%10000, count);
            125        result=0;
            126    }

            127    if(result)cout<<"No duplicates. "<<endl;
            128}

            129

             效率不高,勉強可以AC
            其中deal函數(shù)可以優(yōu)化的
            被屏蔽的是原來WA的代碼(替換108-127的部分),不過還是不知道是怎么錯的,sample和在看到的幾組測試數(shù)據(jù)都沒有問題,各位有看出來的要留言告訴我哈 kaka
            偶發(fā)現(xiàn)一個問題:用第115行的cout代替printf,提交的結果就是WA,將116行換成
            cout<<(int)(v[i-1]/10000)<<"-"<<(v[i-1]%10000)<<" "<<count<<endl;以后還是WA
            覺得有點詭異

            最近總遇到覺得詭異的程序,可見自己還是基礎太差,得多看看書啦 kaka~~~ 

            posted on 2007-08-06 20:50 yoyouhappy 閱讀(3145) 評論(6)  編輯 收藏 引用 所屬分類: yoyo的解題報告acm/icpc學習筆記

            FeedBack:
            # re: POJ 1002 487-3279
            2007-08-07 10:30 | 若弱
            你這樣處理的話,效率有點低哦。
            你應該用一個hashmap來歸并字符串的個數(shù),弄完之后用hash sort來排序,這樣的速度是最快的
              回復  更多評論
              
            # re: POJ 1002 487-3279
            2007-08-07 12:52 | yoyouhappy
            恩 我這樣做確實時間耗的很多
            不過 其實。。。我不知道哈希的
            還得多學習哈~~~
              回復  更多評論
              
            # re: POJ 1002 487-3279
            2007-08-12 14:32 | lidemin
            偶發(fā)現(xiàn)一個問題:用第115行的cout代替printf,提交的結果就是WA,將116行換成
            cout<<(int)(v[i-1]/10000)<<"-"<<(v[i-1]%10000)<<" "<<count<<endl;以后還是WA
            覺得有點詭異



            這個好像是由于cout沒有控制輸出格式的問題吧 比如 如果是0000000的話 你用的 cout 應該是會輸出0-0 如果我沒看錯的話 應該是這樣的不過 你 下面用 的 printf 好像也沒有控制啊 難道printf自動補0了 ??


            我現(xiàn)在 正在做這個 WA了無數(shù)次了 不知道 原因 狂郁悶中。。。  回復  更多評論
              
            # re: POJ 1002 487-3279
            2007-08-16 09:15 | yoyouhappy
            hehe 原來是這個原因,我沒想到0的問題。。。
            printf用%03和%04來控制輸出格式,00000000也會輸出000-0000的吧


            我最近也狂WA,這幾天連不上網(wǎng),就斷網(wǎng)做,感覺倒是不錯,今天早晨提交了7道題竟然是
            4WA+2RE+1AC。。。真是讓我瘋掉了  回復  更多評論
              
            # re: POJ 1002 487-3279
            2009-01-16 19:48 | 原版橘子皮
            全用STRING就好了嘛...做一個函數(shù)讀入輸入的字符串,建個temp的string,遇到-就忽略,其余的替換掉添加到temp里,返回temp。然后直接輸出就行了。。。用map做數(shù)據(jù)結構,自動排序好的~  回復  更多評論
              
            # re: POJ 1002 487-3279
            2011-03-07 09:55 | buct
            那是因為前面補0的原因! 比如 9 應該是 000-0009 而不是0-9  回復  更多評論
              
            Priceline Travel
            Priceline Travel
            久久综合伊人77777| 国产99久久久国产精免费| 国产精品gz久久久| 69SEX久久精品国产麻豆| 久久久久亚洲AV无码观看| 精品国产婷婷久久久| 99久久99这里只有免费费精品| 午夜精品久久久久久毛片| 四虎国产精品成人免费久久| 青青草原综合久久大伊人导航| 久久青青国产| 久久久久久午夜精品| 久久人人添人人爽添人人片牛牛| 中文精品99久久国产 | 欧美久久久久久精选9999| 亚洲成色999久久网站| 亚洲国产成人久久综合一| 精品熟女少妇aⅴ免费久久| 久久久久97国产精华液好用吗| 久久综合五月丁香久久激情| 性做久久久久久久久| 久久久久亚洲av成人网人人软件| 99久久国产宗和精品1上映| 久久久久亚洲AV成人片| 亚洲国产天堂久久综合网站| 理论片午午伦夜理片久久| 亚洲午夜久久久久久久久电影网| 69久久夜色精品国产69| 亚洲&#228;v永久无码精品天堂久久 | 久久综合噜噜激激的五月天| 久久99中文字幕久久| 久久综合视频网站| 精品久久人妻av中文字幕| 久久久久国产| 99久久99久久久精品齐齐| 色99久久久久高潮综合影院| 狠狠88综合久久久久综合网 | 久久99精品综合国产首页| 亚洲国产精品嫩草影院久久| 7777久久亚洲中文字幕| 国产精品99久久久精品无码|