hi,can you find the wrong case in my code?
the answers here are right in my code
Already have, unless you’ve updated your code since
The same testcase as this one:
can anyone tell. me why i am getting WA
#include <iostream>
using namespace std;
int wins(char board[][3],char ch)
{ int res=0;
if(board[0][0]==ch&&board[0][0]==board[0][1]&&board[0][1]==board[0][2])
res++;
if(board[0][0]==ch&&board[0][0]==board[1][0]&&board[1][0]==board[2][0])
res++;
if(board[0][0]==ch&&board[0][0]==board[1][1]&&board[1][1]==board[2][2])
res++;
if(board[0][2]==ch&&board[0][2]==board[1][1]&&board[1][1]==board[2][0])
res++;
if(board[1][0]==ch&&board[1][0]==board[1][1]&&board[1][1]==board[1][2])
res++;
if(board[2][0]==ch&&board[2][0]==board[2][1]&&board[2][1]==board[2][2])
res++;
if(board[0][1]==ch&&board[0][1]==board[1][1]&&board[1][1]==board[2][1])
res++;
if(board[0][2]==ch&&board[0][2]==board[1][2]&&board[1][2]==board[2][2])
res++;
if(res!=0)
return res;
else
return 0;
}
int main()
{
int t;
cin>>t;
while(t--)
{
char mat[3][3];
int x=0,o=0;
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
cin>>mat[i][j];
if(mat[i][j]=='X')
x++;
else if(mat[i][j]=='O')
o++;
}
}
if(x==o||x==o+1)
{
int xx=wins(mat,'X');
int oo=wins(mat,'O');
if(xx>=2||oo>=2)
cout<<"3"<<endl;
else if(xx&&oo)
{
cout<<"3"<<endl;
}
else if(xx)
{ if(x==o+1)
cout<<"1"<<endl;
else
cout<<"3"<<endl;
}
else if(oo)
{
if(x==o)
cout<<"1"<<endl;
else
cout<<"3"<<endl;
}
else
{ if(xx+oo==9)
cout<<"1"<<endl;
else
cout<<"2"<<endl;
}
}
else
{
cout<<"3"<<endl;
}
}
}
Please either format your code or (better!) link to your submission - the forum software has mangled it and it won’t compile!
Should’nt it be 3? As count(‘X’)!=count(‘O’)+1 as first symbol starts with ‘X’
please check it where i am wrong
That still doesn’t compile.
I’m going to assume it’s this submission, in which case it gets the wrong answer for the testcase directly above your last post.
I am getting the same outputs but still compiler is still telling WA.
Post a link to your submission
Can you counter any test case which fails to pass in this?
https://www.codechef.com/viewsolution/46669468
1
__X
__X
OOX
Thanks man,it was a typo in my code i was struggling with this very badly now worked!
can anyone tell me which case I am missing
#include <bits/stdc++.h>
using namespace std;
int main()
{
int t;
cin >> t;
while (t--)
{
int nu = 0, nx = 0, no = 0;
char a[3][3];
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
cin >> a[i][j];
if (a[i][j] == '_')
nu++;
if (a[i][j] == 'X')
nx++;
if (a[i][j] == 'O')
no++;
}
}
int xwin = 0, owin = 0;
if ((a[0][0] == a[0][1]) && (a[0][0] == a[0][2]))
{
if (a[0][0] == 'O')
{
owin++;
}
else if (a[0][0] == 'X')
{
xwin++;
}
}
if ((a[1][0] == a[1][1]) && (a[1][0] == a[1][2]))
{
if (a[1][0] == 'O')
{
owin++;
}
else if (a[1][0] == 'X')
{
xwin++;
}
}
if ((a[2][0] == a[2][1]) && (a[2][0] == a[2][2]))
{
if (a[2][0] == 'O')
{
owin++;
}
else if (a[2][0] == 'X')
{
xwin++;
}
}
if ((a[0][0] == a[1][0]) && (a[0][0] == a[2][0]))
{
if (a[0][0] == 'O')
{
owin++;
}
else if (a[0][0] == 'X')
{
xwin++;
}
}
if ((a[0][1] == a[1][1]) && (a[0][1] == a[2][1]))
{
if (a[0][1] == 'O')
{
owin++;
}
else if (a[0][1] == 'X')
{
xwin++;
}
}
if ((a[0][2] == a[1][2]) && (a[0][2] == a[2][2]))
{
if (a[0][2] == 'O')
{
owin++;
}
else if (a[0][2] == 'X')
{
xwin++;
}
}
if ((a[0][0] == a[1][1]) && (a[0][0] == a[2][2]))
{
if (a[0][0] == 'O')
{
owin++;
}
else if (a[0][0] == 'X')
{
xwin++;
}
}
if ((a[2][0] == a[1][1]) && (a[2][0] == a[0][2]))
{
if (a[2][0] == 'O')
{
owin++;
}
else if (a[2][0] == 'X')
{
xwin++;
}
}
if (nu == 0)
{
if (nx == 5 && no == 4)
cout << "1" << endl;
else
cout << "3" << endl;
}
else if (nu != 0)
{
if ((xwin == 1 && owin == 0) && (nx - no == 1))
cout << "1" << endl;
else if ((xwin == 0 && owin == 1) && (nx == no))
cout << "1" << endl;
else if ((xwin == 0 && owin == 0) && (nx - no == 1 || nx - no == 0))
cout << "2" << endl;
else
cout << "3" << endl;
}
}
return 0;
}
Please either format your code or (better!) link to your submission - the forum software has mangled it and it won’t compile!
ok
#include <bits/stdc++.h>
using namespace std;
int main()
{
int t;
cin >> t;
while (t--)
{
int nu = 0, nx = 0, no = 0;
char a[3][3];
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
cin >> a[i][j];
if (a[i][j] == '_')
nu++;
if (a[i][j] == 'X')
nx++;
if (a[i][j] == 'O')
no++;
}
}
int xwin = 0, owin = 0;
if ((a[0][0] == a[0][1]) && (a[0][0] == a[0][2]))
{
if (a[0][0] == 'O')
{
owin++;
}
else if (a[0][0] == 'X')
{
xwin++;
}
}
if ((a[1][0] == a[1][1]) && (a[1][0] == a[1][2]))
{
if (a[1][0] == 'O')
{
owin++;
}
else if (a[1][0] == 'X')
{
xwin++;
}
}
if ((a[2][0] == a[2][1]) && (a[2][0] == a[2][2]))
{
if (a[2][0] == 'O')
{
owin++;
}
else if (a[2][0] == 'X')
{
xwin++;
}
}
if ((a[0][0] == a[1][0]) && (a[0][0] == a[2][0]))
{
if (a[0][0] == 'O')
{
owin++;
}
else if (a[0][0] == 'X')
{
xwin++;
}
}
if ((a[0][1] == a[1][1]) && (a[0][1] == a[2][1]))
{
if (a[0][1] == 'O')
{
owin++;
}
else if (a[0][1] == 'X')
{
xwin++;
}
}
if ((a[0][2] == a[1][2]) && (a[0][2] == a[2][2]))
{
if (a[0][2] == 'O')
{
owin++;
}
else if (a[0][2] == 'X')
{
xwin++;
}
}
if ((a[0][0] == a[1][1]) && (a[0][0] == a[2][2]))
{
if (a[0][0] == 'O')
{
owin++;
}
else if (a[0][0] == 'X')
{
xwin++;
}
}
if ((a[2][0] == a[1][1]) && (a[2][0] == a[0][2]))
{
if (a[2][0] == 'O')
{
owin++;
}
else if (a[2][0] == 'X')
{
xwin++;
}
}
if (nu == 0)
{
if (nx == 5 && no == 4)
cout << "1" << endl;
else
cout << "3" << endl;
}
else if (nu != 0)
{
if ((xwin == 1 && owin == 0) && (nx - no == 1))
cout << "1" << endl;
else if ((xwin == 0 && owin == 1) && (nx == no))
cout << "1" << endl;
else if ((xwin == 0 && owin == 0) && (nx - no == 1 || nx - no == 0))
cout << "2" << endl;
else
cout << "3" << endl;
}
}
return 0;
}
Thanks
Consider the test input:
1
XXX
XXO
OOO
Thank you so much
Can some one help me resolving the bug? I am getting WA
#include <bits/stdc++.h>
using namespace std;
bool check_win(vector<vector<char>>& v, char ch)
{
for(int i=0;i<v.size();i++)
{
bool found = true;
for(int j=0;j<3;j++)
{
if(v[i][j]!=ch)
{
found = false;
break;
}
}
if(found)
{
return true;
}
}
for(int i=0;i<v.size();i++)
{
bool found = true;
for(int j=0;j<3;j++)
{
if(v[j][i]!=ch)
{
found = false;
break;
}
}
if(found)
{
return true;
}
}
if(v[0][0] == ch and v[1][1] == ch and v[2][2] == ch) return true;
if(v[0][2] == ch and v[1][1] == ch and v[2][0] == ch) return true;
return false;
}
int solve(string a, string b, string c)
{
vector<vector<char>> v;
v.push_back(vector<char>(a.begin(),a.end()));
v.push_back(vector<char>(b.begin(),b.end()));
v.push_back( vector<char>(c.begin(),c.end()));
int x=0, o=0;
for(auto p:v)
{
for(auto q:p)
{
if(q == 'X') x++;
if(q == 'O') o++;
}
}
if(x-1 == o || x == o)
{
bool x_win = false, o_win = false;
x_win = check_win(v,'X');
o_win = check_win(v,'O');
if (x_win and o_win) return 3;
if (x_win or o_win) return 1;
if(x==5 and o==4) return 1;
return 2;
}
else
{
return 3;
}
}
int main() {
// your code goes here
int t;
cin>>t;
while(t--)
{
string a,b,c;
cin>>a>>b>>c;
cout<<solve(a,b,c)<<endl;
}
return 0;
}