문제 분류 수업 진도 대회 채점현황 순위 질문게시판
게임
스도쿠 타이핑 리듬 타자게임 타이핑 테트리스 타이핑 인베이더 타이핑 지뢰찾기 8192 공룡게임 타이핑 플래피버드 랭킹
로그인

7294 : 재귀 팰린드롬 분할

•시간제한: 2.000 S •메모리제한: 256 MB •제출: 0 •통과: 0 •만든사람: suakii

7294 : 재귀 팰린드롬 분할

시간 2.000s · 메모리 256MB · 제출 0 · 정답 0

문제 설명

문자열 $S$를 부분 문자열들이 모두 팰린드롬이 되도록 분할하는 모든 경우를 출력하십시오.
백트래킹으로 구현합니다: 현재 위치에서 시작하여 팰린드롬인 부분 문자열을 선택하고 재귀 호출합니다.





[제약 조건]
• 입력되는 모든 수는 정수입니다.

입력 설명

첫째 줄에 영문 소문자로 이루어진 문자열 $S$가 주어집니다. (길이 $\le 12$)

출력 설명

$S$를 팰린드롬으로만 분할하는 모든 경우를 줄바꿈으로 출력합니다.
각 분할은 구분자 |로 표시합니다.

입력 예시
COPY
복사되었습니다!

aab

출력 예시
COPY
복사되었습니다!

a|a|b
aa|b

도움

def backtrack(start, path): if start==len(s): result.append('|'.join(path)); return; for end in range(start+1, len(s)+1): if is_palindrome(s[start:end]): path.append(s[start:end]); backtrack(end, path); path.pop()
NOTICE  —  BFStudy OJ 정보샘
애들아, 문제 많이 풀고 게임 잠깐 하는거지?
— 정보샘