我在本地编译器上第一个测试案例与答案是一致的,但oj上就是判错。。。。。
#include<bits/stdc++.h>
using namespace std;
void cout_num(string s,int &i,int &j){
for(int bp=0,rp=s.size()-1;rp>=bp;bp++,rp--){
if(rp>bp){
if(s[bp]==s[rp]&&s[bp]=='0')i+=2;
else if(s[bp]=='0'||s[rp]=='0')j+=1;
}
else if(rp==bp){
if(s[rp]=='0')j++;
}
}
}
int T,n;
int main(){
scanf("%d",&T);
int i=0,j=0;
string s;
while(T--){
s.clear();
scanf("%d",&n);
cin.sync();
i=0;j=0;
cin>>s;
cout_num(s,i,j);
if(i+j==0){
printf("DRAW\n");
continue;
}
if(s.size()%2==0||(s.size()%2==1&&s[s.size()/2]=='1')){
if(i==0){
printf("ALICE\n");
}
else{
if(j<2){
printf("BOB\n");
}
else if(j==2){
printf("DRAW\n");
}
else if(j>2){
printf("ALICE\n");
}
}
}
else {
if(j==1&&i==0){
printf("BOB\n");
}
else if(i==0&&j==2){
printf("DRAW\n");
}
else {
printf("ALICE\n");
}
}
}
return 0;
}