[BOJ] - 16924
12264 ワード
https://www.acmicpc.net/problem/16924
可能な限り数を探索するタイプです.
再帰形式で問題を解く場合が多く,一歩ごとに次の再帰を実現し,不可能をスキップする場合がある.
復帰の終点(脱出条件)に達した場合、1を返し、状況の数を計算します
数の場合の問題は完全に探求型である
ブルートフォースは完全な探索アルゴリズムである. 線形構造 を順次ナビゲートする.
つまり、ドアを回って条件を一つ一つチェックすることで、
DFS、BFS等による問題解決
これは交差できる問題で、可能な答えを印刷すればいい問題です.
1)NxM全体に移動し、最大の配置が可能な十字架を配置します.
2)最終状態確認で解除
可能な場合は、十字架を解放することで数をナビゲートできます.失敗した場合は、他の状況の数を復元しようとします.
これは問題だと思った.はすべての場合の数字を試み、できればいずれかを出力することができ、最大サイズだけを試してみるべきだ. 耳でを解きたいなら、下のように解くことができます.
1)完全探索の際に落下しない
2)*の場合、最大サイズの十字架をテストしてください.
3)回帰開始部分でテストが成功したかどうか
4)トップに戻ると、 これは交差できる問題で、可能な答えを印刷すればいい問題です.
N x M全体に移動し、最大サイズの十字架を配置します.
最終状態を確認するように解く.
フルナビゲーション
可能な限り数を探索するタイプです.
再帰形式で問題を解く場合が多く,一歩ごとに次の再帰を実現し,不可能をスキップする場合がある.
復帰の終点(脱出条件)に達した場合、1を返し、状況の数を計算します
数の場合の問題は完全に探求型である
ブルートフォースは完全な探索アルゴリズムである.
비선형구조는 DFS 또는 BFS 를 이용한다
つまり、ドアを回って条件を一つ一つチェックすることで、
DFS、BFS等による問題解決
ノート
に答える
これは交差できる問題で、可能な答えを印刷すればいい問題です.
1)NxM全体に移動し、最大の配置が可能な十字架を配置します.
2)最終状態確認で解除
に質問
可能な場合は、十字架を解放することで数をナビゲートできます.失敗した場合は、他の状況の数を復元しようとします.
これは問題だと思った.
1)完全探索の際に落下しない
2)*の場合、最大サイズの十字架をテストしてください.
3)回帰開始部分でテストが成功したかどうか
4)トップに戻ると、
N x M全体に移動し、最大サイズの十字架を配置します.
最終状態を確認するように解く.
コード#コード#
import sys
sys.stdin = open('16924.txt')
n, m = list(map(int,input().split()))
data = ['' for _ in range(n)]
for i in range(n):
line = input()
data[i] = line
check = [[False for _ in range(m)] for _ in range(n)]
# for 문 사용해서 완전탐색
# 채울 수 있는 모든 곳을 최대 크기의 십자가로 채운다
ans = set()
for i in range(n):
for j in range(m):
if data[i][j] == '.':
continue
max_size = 0
dl = 1
while True:
if i - dl < 0 or i + dl >= n or j - dl < 0 or j + dl >= m:
break
if data[i-dl][j] == '.' or data[i+dl][j] == '.' or data[i][j-dl] == '.' or data[i][j+dl] == '.':
break
max_size = dl
dl += 1
if max_size != 0:
check[i][j] = True
for k in range(1, max_size + 1):
check[i+k][j] = True
check[i-k][j] = True
check[i][j+k] = True
check[i][j-k] = True
ans.add((i+1, j+1, max_size))
# 문제 요구사항 만족 여부 체크
for i in range(n):
for j in range(m):
if data[i][j] == '*' and not check[i][j]:
print(-1)
exit()
print(len(ans))
for d in ans:
print(' '.join(list(map(str,d))))
Reference
この問題について([BOJ] - 16924), 我々は、より多くの情報をここで見つけました https://velog.io/@jisngprk/BOJ-16924テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol