1 | |
2 | 首先,这道题没那么复杂(看着队长的抽象代码非常的短但拿了个50分……) |
3 | 反正直接行列对角线全给它暴力各整两遍就成,一遍找一头牛能单独胜利的,一遍找两头牛联合能胜利的。 |
4 | 下面就是我的代码(有那么亿点点儿长,由于我很多地方都是直接复制粘贴的,导致修了一通的报错,当然修完之后直接过了样例): |
5 | */ |
6 | #include<bits/stdc++.h> |
7 | using namespace std; |
8 | char mp[5][5]; |
9 | int flag1[30]; |
10 | int flag2[30][30]; |
11 | int flag[30]; |
12 | int main() |
13 | { |
14 | freopen("tttt.in","r",stdin); |
15 | freopen("tttt.out","w",stdout); |
16 | for(int i=1;i<=3;i++) |
17 | { |
18 | for(int j=1;j<=3;j++) |
19 | { |
20 | cin>>mp[i][j]; |
21 | } |
22 | } |
23 | for(int i=1;i<=3;i++) |
24 | { |
25 | memset(flag,0,sizeof(flag)); |
26 | for(int j=1;j<=3;j++) |
27 | { |
28 | flag[int(mp[i][j]-'A'+1)]=1; |
29 | } |
30 | int num=0; |
31 | int now=0; |
32 | for(int j=1;j<=26;j++) |
33 | { |
34 | num+=flag[j]; |
35 | if(flag[j]==1) |
36 | { |
37 | now=j; |
38 | } |
39 | } |
40 | if(num==1) |
41 | { |
42 | flag1[now]=1; |
43 | } |
44 | } |
45 | for(int i=1;i<=3;i++) |
46 | { |
47 | memset(flag,0,sizeof(flag)); |
48 | for(int j=1;j<=3;j++) |
49 | { |
50 | flag[int(mp[j][i]-'A'+1)]=1; |
51 | } |
52 | int num=0; |
53 | int now=0; |
54 | for(int j=1;j<=26;j++) |
55 | { |
56 | num+=flag[j]; |
57 | if(flag[j]==1) |
58 | { |
59 | now=j; |
60 | } |
61 | } |
62 | if(num==1) |
63 | { |
64 | flag1[now]=1; |
65 | } |
66 | } |
67 | memset(flag,0,sizeof(flag)); |
68 | for(int j=1;j<=3;j++) |
69 | { |
70 | flag[int(mp[j][j]-'A'+1)]=1; |
71 | } |
72 | int num=0; |
73 | int now=0; |
74 | for(int j=1;j<=26;j++) |
75 | { |
76 | num+=flag[j]; |
77 | if(flag[j]==1) |
78 | { |
79 | now=j; |
80 | } |
81 | } |
82 | if(num==1) |
83 | { |
84 | flag1[now]=1; |
85 | } |
86 | memset(flag,0,sizeof(flag)); |
87 | for(int j=1;j<=3;j++) |
88 | { |
89 | flag[int(mp[j][3-j+1]-'A'+1)]=1; |
90 | } |
91 | num=0; |
92 | now=0; |
93 | for(int j=1;j<=26;j++) |
94 | { |
95 | num+=flag[j]; |
96 | if(flag[j]==1) |
97 | { |
98 | now=j; |
99 | } |
100 | } |
101 | if(num==1) |
102 | { |
103 | flag1[now]=1; |
104 | } |
105 | for(int i=1;i<=3;i++) |
106 | { |
107 | memset(flag,0,sizeof(flag)); |
108 | for(int j=1;j<=3;j++) |
109 | { |
110 | flag[int(mp[i][j]-'A'+1)]=1; |
111 | } |
112 | int num=0; |
113 | int now1=0,now2=0; |
114 | for(int j=1;j<=26;j++) |
115 | { |
116 | num+=flag[j]; |
117 | if(flag[j]==1&&now1==0) |
118 | { |
119 | now1=j; |
120 | } |
121 | else if(flag[j]==1) |
122 | { |
123 | now2=j; |
124 | } |
125 | } |
126 | if(num==2) |
127 | { |
128 | flag2[now1][now2]=1; |
129 | } |
130 | } |
131 | for(int i=1;i<=3;i++) |
132 | { |
133 | memset(flag,0,sizeof(flag)); |
134 | for(int j=1;j<=3;j++) |
135 | { |
136 | flag[int(mp[j][i]-'A'+1)]=1; |
137 | } |
138 | num=0; |
139 | int now1=0,now2=0; |
140 | for(int j=1;j<=26;j++) |
141 | { |
142 | num+=flag[j]; |
143 | if(flag[j]==1&&now1==0) |
144 | { |
145 | now1=j; |
146 | } |
147 | else if(flag[j]==1) |
148 | { |
149 | now2=j; |
150 | } |
151 | } |
152 | if(num==2) |
153 | { |
154 | flag2[now1][now2]=1; |
155 | } |
156 | } |
157 | memset(flag,0,sizeof(flag)); |
158 | for(int j=1;j<=3;j++) |
159 | { |
160 | flag[int(mp[j][j]-'A'+1)]=1; |
161 | } |
162 | num=0; |
163 | int now1=0,now2=0; |
164 | for(int j=1;j<=26;j++) |
165 | { |
166 | num+=flag[j]; |
167 | if(flag[j]==1&&now1==0) |
168 | { |
169 | now1=j; |
170 | } |
171 | else if(flag[j]==1) |
172 | { |
173 | now2=j; |
174 | } |
175 | } |
176 | if(num==2) |
177 | { |
178 | flag2[now1][now2]=1; |
179 | } |
180 | memset(flag,0,sizeof(flag)); |
181 | for(int j=1;j<=3;j++) |
182 | { |
183 | flag[int(mp[j][3-j+1]-'A'+1)]=1; |
184 | } |
185 | num=0; |
186 | now1=0,now2=0; |
187 | for(int j=1;j<=26;j++) |
188 | { |
189 | num+=flag[j]; |
190 | if(flag[j]==1&&now1==0) |
191 | { |
192 | now1=j; |
193 | } |
194 | else if(flag[j]==1) |
195 | { |
196 | now2=j; |
197 | } |
198 | } |
199 | if(num==2) |
200 | { |
201 | flag2[now1][now2]=1; |
202 | } |
203 | int ans1=0,ans2=0; |
204 | for(int i=1;i<=26;i++) |
205 | { |
206 | ans1+=flag1[i]; |
207 | } |
208 | for(int i=1;i<=26;i++) |
209 | { |
210 | for(int j=1;j<=26;j++) |
211 | { |
212 | ans2+=flag2[i][j]; |
213 | } |
214 | } |
215 | cout<<ans1<<endl<<ans2; |
216 | return 0; |
217 | } |