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>
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

2

3

4

5

6

7



8

9

10



11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48



49

50

51

52

53

54

55

56



57

58

59



60

61

62



63

64

65

66

67



68

69

70

71

72

73

74

75

76

77

78

79

80


81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110



111

112

113

114



115

116

117

118

119

120

121

122



123

124

125

126

127

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~~~