• <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,都要瘋了。。。
            題意就是輸入幾組字符串,按照給出的形式轉換為統一格式,然后輸出出現多于一次的字符串出現的次數,輸出時按照升序排列。很簡單,但是做的很郁悶,一直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函數可以優化的
            被屏蔽的是原來WA的代碼(替換108-127的部分),不過還是不知道是怎么錯的,sample和在看到的幾組測試數據都沒有問題,各位有看出來的要留言告訴我哈 kaka
            偶發現一個問題:用第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來歸并字符串的個數,弄完之后用hash sort來排序,這樣的速度是最快的
              回復  更多評論
              
            # re: POJ 1002 487-3279
            2007-08-07 12:52 | yoyouhappy
            恩 我這樣做確實時間耗的很多
            不過 其實。。。我不知道哈希的
            還得多學習哈~~~
              回復  更多評論
              
            # re: POJ 1002 487-3279
            2007-08-12 14:32 | lidemin
            偶發現一個問題:用第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了 ??


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


            我最近也狂WA,這幾天連不上網,就斷網做,感覺倒是不錯,今天早晨提交了7道題竟然是
            4WA+2RE+1AC。。。真是讓我瘋掉了  回復  更多評論
              
            # re: POJ 1002 487-3279
            2009-01-16 19:48 | 原版橘子皮
            全用STRING就好了嘛...做一個函數讀入輸入的字符串,建個temp的string,遇到-就忽略,其余的替換掉添加到temp里,返回temp。然后直接輸出就行了。。。用map做數據結構,自動排序好的~  回復  更多評論
              
            # re: POJ 1002 487-3279
            2011-03-07 09:55 | buct
            那是因為前面補0的原因! 比如 9 應該是 000-0009 而不是0-9  回復  更多評論
              
            Priceline Travel
            Priceline Travel
            久久久久久久99精品免费观看| 国产99久久久国产精免费| 久久精品国产亚洲5555| 久久久久国产一区二区三区| 久久久久亚洲国产| 国产亚洲精久久久久久无码| 999久久久国产精品| 午夜精品久久久久| 国产精品久久久亚洲| 欧美大战日韩91综合一区婷婷久久青草| 伊人 久久 精品| 18岁日韩内射颜射午夜久久成人| 久久99精品久久久久久野外| 日日躁夜夜躁狠狠久久AV| 久久精品无码一区二区三区日韩| 人人狠狠综合久久88成人| 久久精品国产WWW456C0M| 久久婷婷五月综合色高清 | 久久精品国产一区二区电影| 久久人人爽人人爽人人片AV麻烦| 久久精品国产精品青草app| 久久久久亚洲精品日久生情| 天天综合久久一二三区| 免费久久人人爽人人爽av| 大蕉久久伊人中文字幕| 久久久久高潮毛片免费全部播放 | 久久久WWW成人免费精品| 97久久精品人妻人人搡人人玩 | 精品熟女少妇a∨免费久久| 99久久做夜夜爱天天做精品| 久久99精品久久久久久秒播| 久久精品嫩草影院| 狠狠色噜噜狠狠狠狠狠色综合久久| 亚洲精品久久久www| 午夜视频久久久久一区 | 久久国产精品偷99| 国产精品成人精品久久久| 欧美777精品久久久久网| 国内精品久久国产大陆| 久久精品www| 丁香久久婷婷国产午夜视频|