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 阅读(3138)
评论(6) 编辑 收藏 引用 所属分类:
yoyo的解题报告 、
acm/icpc 、
学习笔记