홍시홍의 프로그래밍

swea 7699 수지 본문

알고리즘 문제풀이/swea

swea 7699 수지

홍시홍 2019. 6. 4. 19:24

#include 
#include 
using namespace std;
int r, c;
int map[21][21];
int visit[21][21];
int alpha[27];
int dr[4] = { -1,0,1,0 };
int dc[4] = { 0,1,0,-1 };
int Maxvalue = 0;
bool Init(int nr, int nc)
{
if (nr < 0 || nr >= r || nc < 0 || nc >= c)
return true;
return false;
}
void show(int a[][21])
{
for (int i = 0; i < r; i++)
{
for (int j = 0; j < c; j++)
{
cout << map[i][j];
}
cout << endl;
}
cout << endl;
}
void solve(int nowr, int nowc, int cnt)
{
if (Maxvalue < cnt)
Maxvalue = cnt;
//cout << nowr << " " << nowc << endl;
for (int i = 0; i < 4; i++)
{
int nr = nowr + dr[i];
int nc = nowc + dc[i];
if (Init(nr, nc))
continue;
if (alpha[map[nr][nc]] == 1)
continue;
if (visit[nr][nc] == 1)
continue;

visit[nr][nc] = 1;
alpha[map[nr][nc]] = 1;
solve(nr, nc, cnt + 1);
visit[nr][nc] = 0;
alpha[map[nr][nc]] = 0;
}
}
int main()
{
int t;
cin >> t;
for (int tc = 1; tc <= t; tc++)
{
cin >> r >> c;
Maxvalue = 0;
for (int i = 0; i < 26; i++)
{
alpha[i] = 0;
}
for (int i = 0; i < r; i++)
{

for (int j = 0; j < c; j++)
{
char ch;
cin >> ch;
map[i][j] = (int)ch - 65;
visit[i][j] = 0;
}
}
alpha[map[0][0]] = 1;
solve(0,0,1);
//cout << Maxvalue << endl;
cout << "#"<<tc<<" "< }
return 0;
}

'알고리즘 문제풀이 > swea' 카테고리의 다른 글

[swea 5648] 원자 소멸 시뮬레이션  (0) 2020.04.22
[swea 2382] 미생물 격리  (0) 2020.04.21
[swea 5644] 무선 충전  (0) 2020.04.20
[SWEA 5658] 보물상자 비밀번호  (0) 2020.04.18
7465 창용 마을  (0) 2019.06.05
Comments