자이의 프로그래밍
SWEA-2819 격자판의 숫자 이어붙이기 본문
숫자를 이어붙였다. 맵의 범위를 벗어나면 다시 찾게 했고 총 7자리의 수를 찾았을 때 체크해주면서 찾은 수를 하나씩 더해주었다.
#include <iostream>
#include <cstring>
using namespace std;
int ch[10000100];
int arr[10][10];
int total = 0;
int dx[] = { 1, 0, -1, 0 };
int dy[] = { 0, 1, 0, -1 };
void checking(int x, int y, int cnt, int val) {
if (cnt == 7) {
if (ch[val] != 1) {
ch[val] = 1;
total += 1;
}
return;
}
for (int i = 0; i < 4; i++) {
int nx = x + dx[i];
int ny = y + dy[i];;
if (nx < 0 || ny < 0 || nx >= 4 || ny >= 4) continue;
checking(nx, ny, cnt + 1, val * 10 + arr[nx][ny]);
}
}
int main() {
int tc;
cin >> tc;
for (int T = 1; T <= tc; T++) {
total = 0;
memset(ch, 0, sizeof(ch));
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
cin >> arr[i][j];
}
}
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
checking(i, j, 1, arr[i][j]);
}
}
cout << "#" << T << " " << total << '\n';
}
return 0;
}
'Algorithm > Cases-Study' 카테고리의 다른 글
SWEA-1289 원재의 메모리 복구하기 (0) | 2021.04.28 |
---|---|
SWEA-4466 최대 성적표 만들기 (0) | 2021.04.16 |
SWEA-5658 보물상자 비밀번호 (0) | 2021.04.16 |
SWEA-4613 러시아 국기같은 깃발 (0) | 2021.04.11 |
SWEA-1861 정사각형 방 (0) | 2021.04.11 |