• <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ù),輸出時(shí)按照升序排列。很簡單,但是做的很郁悶,一直WA
            貼個(gè)代碼紀(jì)念,下邊是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

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

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

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

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



            這個(gè)好像是由于cout沒有控制輸出格式的問題吧 比如 如果是0000000的話 你用的 cout 應(yīng)該是會(huì)輸出0-0 如果我沒看錯(cuò)的話 應(yīng)該是這樣的不過 你 下面用 的 printf 好像也沒有控制啊 難道printf自動(dòng)補(bǔ)0了 ??


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


            我最近也狂WA,這幾天連不上網(wǎng),就斷網(wǎng)做,感覺倒是不錯(cuò),今天早晨提交了7道題竟然是
            4WA+2RE+1AC。。。真是讓我瘋掉了  回復(fù)  更多評論
              
            # re: POJ 1002 487-3279
            2009-01-16 19:48 | 原版橘子皮
            全用STRING就好了嘛...做一個(gè)函數(shù)讀入輸入的字符串,建個(gè)temp的string,遇到-就忽略,其余的替換掉添加到temp里,返回temp。然后直接輸出就行了。。。用map做數(shù)據(jù)結(jié)構(gòu),自動(dòng)排序好的~  回復(fù)  更多評論
              
            # re: POJ 1002 487-3279
            2011-03-07 09:55 | buct
            那是因?yàn)榍懊嫜a(bǔ)0的原因! 比如 9 應(yīng)該是 000-0009 而不是0-9  回復(fù)  更多評論
              
            Priceline Travel
            Priceline Travel
            91精品国产高清久久久久久91| 亚洲日韩欧美一区久久久久我| 欧美久久久久久午夜精品| 久久福利青草精品资源站| 99久久精品国产一区二区蜜芽| 色偷偷888欧美精品久久久| 日韩AV毛片精品久久久| 久久99热这里只频精品6| 亚洲女久久久噜噜噜熟女| 欧美日韩中文字幕久久伊人| 人妻中文久久久久| 国产一级持黄大片99久久| 久久亚洲国产最新网站| 久久99精品国产麻豆宅宅| 亚洲欧美成人久久综合中文网 | 久久电影网2021| 欧美伊人久久大香线蕉综合69| 久久久久久亚洲Av无码精品专口| 91精品国产91热久久久久福利| 囯产精品久久久久久久久蜜桃| 狠狠色综合久久久久尤物| 亚洲午夜无码久久久久小说| 久久香蕉国产线看观看乱码| 久久精品国产亚洲AV麻豆网站 | 国产精品成人久久久久久久| 新狼窝色AV性久久久久久| 久久青青国产| 久久人做人爽一区二区三区| 久久久艹| 97久久超碰国产精品2021| 无码人妻精品一区二区三区久久| 一日本道伊人久久综合影| 色老头网站久久网| 大香伊人久久精品一区二区| 久久精品国产久精国产一老狼| 欧美大战日韩91综合一区婷婷久久青草 | 东方aⅴ免费观看久久av| 热久久国产欧美一区二区精品| 欧美国产成人久久精品| 99久久国产综合精品麻豆| 国产69精品久久久久9999|