POJ 1002
一直WA,都要疯了。。。
题意就是输入几组字符串,按照给出的形式转换为统一格式,然后输出出现多于一次的字符串出现的次数,输出时按照升序排列。很简单,但是做的很郁闷,一直WA
贴个代码纪念,下边是AC的代码~~~
1
#include<iostream>
2
#include<vector>
3
#include<string>
4
#include<algorithm>
5
using namespace std;
6
int deal(char c)
7

{
8
int n;
9
switch(c)
10

{
11
case'A':
12
case'B':
13
case'C':
14
n=2;break;
15
case'D':
16
case'E':
17
case'F':
18
n=3;break;
19
case'G':
20
case'H':
21
case'I':
22
n=4;break;
23
case'J':
24
case'K':
25
case'L':
26
n=5;break;
27
case'M':
28
case'N':
29
case'O':
30
n=6;break;
31
case'P':
32
case'R':
33
case'S':
34
n=7;break;
35
case'T':
36
case'U':
37
case'V':
38
n=8;break;
39
case'W':
40
case'X':
41
case'Y':
42
n=9;break;
43
44
}
45
return n;
46
}
47
int 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 阅读(3140)
评论(6) 编辑 收藏 引用 所属分类:
yoyo的解题报告 、
acm/icpc 、
学习笔记