Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++의 행렬에서 왼쪽 위에서 오른쪽 아래로 모든 회문 경로를 인쇄합니다.


이 문제에서 aplhabets(소문자만)를 포함하는 행렬이 주어지고 행렬의 왼쪽 상단에서 오른쪽 하단까지 주어진 행렬의 모든 회문 경로를 인쇄해야 합니다.

이 문제에서 허용된 이동은 오른쪽과 아래쪽입니다. 대각선 이동은 허용되지 않습니다.

문제를 이해하기 위해 예를 들어 보겠습니다. −

입력: 행렬[][] ={ {"xxxy", "yxxx", "xyyx"}출력: xxxxxx , xxxxxx , xxxxxx

설명

wrt에서 i 번째 까지의 위치를 ​​사용하여 왼쪽 위에서 오른쪽 아래로의 모든 유효한 이동을 볼 수 있습니다. 위치.

i00 -> 나는01 -> 나는02 -> 나는03 -> 나는13 -> 나는23 =xxxyxxxi00 -> 나는01 -> 나는11 -> 나는12 -> 나는13 -> 나는23 =xxxxxx...i00 -> 나는10 -> 나는20 -> 나는21 -> 나는22 -> 나는23 =xyxyyx

가능한 모든 결과 중에서 회문 경로만 다음과 같은 결과로 필요합니다.

<미리>i00 -> i01 -> i11 -> i12 -> i13 -> i23 =xxxxxxi00 -> i01 -> i02 -> i12 -> i13 -> i23 =xxxxxxi00 -> i10 -> i11 -> i12 -> i22 -> i23 =xxxxyx

설명 자체에서 문제에 대한 솔루션의 기반을 마련했습니다. 왼쪽 상단에서 오른쪽 하단까지의 모든 경로를 찾고 회문 경로에 결과를 제공하는 모든 경로를 인쇄합니다.

예시

아래 예는 솔루션을 설명합니다 -

#include네임스페이스 std 사용;#define N 4int printPalindrome(string str){ int len ​​=str.length() / 2; for (int i =0; i  

출력

Palimdromic 경로는 다음과 같습니다.