6

Untitled

public
6shootingstar9 Mar 29, 2025 Never 56
Clone
C++ paste1.txt 217 lines (217 loc) | 3.3 KB
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
}