No older revisions available
No older revisions available
~cpp
#include <iostream>
#include <cstdlib>
using namespace std;
int testcase, testNum;
char list[50][50];
char testlist[20][50];
char temp[255];
int row, col, i, j, k, n;
bool check(int ax, int ay, char *temp)
{
int x=ax; int y=ay;
int length = strlen(temp);
//북 0, -1
for(n=0; n<length && y>=0; n++, y--)
{
if(list[x][y]!=temp[n])
break;
if(n==length-1)
return true;
}
//북동 +1, -1
x=ax; y=ay;
for(n=0; n<length && x<row && y>=0; n++, x++, y--)
{
if(list[x][y]!=temp[n])
break;
if(n==length-1)
return true;
}
//동 +1, 0
x=ax; y=ay;
for(n=0; n<length && x<row; n++, x++)
{
if(list[x][y]!=temp[n])
break;
if(n==length-1)
return true;
}
//남동 +1, +1
x=ax; y=ay;
for(n=0; n<length && x<row && y<col; n++, x++, y++)
{
if(list[x][y]!=temp[n])
break;
if(n==length-1)
return true;
}
//남 0, +1
x=ax; y=ay;
for(n=0; n<length && y<col; n++, y++)
{
if(list[x][y]!=temp[n])
break;
if(n==length-1)
return true;
}
//남서 -1, +1
x=ax; y=ay;
for(n=0; n<length && x>=0 && y<col; n++, x--, y++)
{
if(list[x][y]!=temp[n])
break;
if(n==length-1)
return true;
}
//서 -1, 0
x=ax; y=ay;
for(n=0; n<length && x>=0; n++, x--)
{
if(list[x][y]!=temp[n])
break;
if(n==length-1)
return true;
}
//북서 -1, -1
x=ax; y=ay;
for(n=0; n<length && x>=0 && y>=0; n++, x--, y--)
{
if(list[x][y]!=temp[n])
break;
if(n==length-1)
return true;
}
return false;
}
void calculate()
{
bool exitCond;
for(k=0; k<testNum; k++)
{
exitCond=false;
for(i=0; i<row; i++)
{
for(j=0; j<col; j++)
{
if(list[i][j]==testlist[k][0])
{
if(check(i, j, testlist[k]))
{
cout <<i+1 <<" " <<j+1 <<endl;
exitCond=true;
break;
}
}
}
if(exitCond)
break;
}
}
}
int main()
{
cin >> testcase;
cin.getline(temp, 255);
while(testcase--)
{
cin.getline(temp, 255);
cin >> row >> col;
for(i=0; i<row; i++)
{
for(j=0; j<col; j++)
{
cin>>list[i][j];
if(list[i][j]>=65 && list[i][j]<=90)
list[i][j] = list[i][j] + 32;
}
}
cin >> testNum;
cin.getline(temp, 255);
for(i=0; i<testNum; i++)
{
cin.getline(testlist[i], 50);
for(j=0; j<strlen(testlist[i]); j++)
{
if(testlist[i][j]>=65 && testlist[i][j]<=90)
testlist[i][j] = testlist[i][j] + 32;
}
}
calculate();
if(testcase!=0)
cout << endl;
}
return 0;
}