>  기사  >  백엔드 개발  >  확장 행렬에서 C++의 이전 요소를 반환합니다.

확장 행렬에서 C++의 이전 요소를 반환합니다.

WBOY
WBOY앞으로
2023-09-15 09:17:02962검색

확장 행렬에서 C++의 이전 요소를 반환합니다.

확장행렬을 바탕으로 문제를 토론해 보세요. 확장 행렬은 크기가 어느 정도 증가하는 행렬입니다.

여기에는 크기가 2의 배수로 확장된 문자 행렬이 있습니다. 즉, 원래 행렬의 크기가 N * N이면 확장된 행렬의 크기는 2N * 2N이 됩니다. (i, j)에 위치한 문자 시퀀스가 ​​주어지고 (i, (j - N - 1)%N)에 위치한 문자 시퀀스를 반환해야 합니다.

일부 초기 확장 행렬을 시각화하여 이해해 보겠습니다.

Given Matrix -> [ a, b ] [ c, d ], 2 X 2 matrix
Multiplying with { a, b, c, d }
A X [ a, b ]
B X [ a, b ]
C X [ a, b ]
D X [ a, b ]
[ c, d ] [ c, d ] [ c, d ] [ c, d ]

Expanded Matrix -> [ aa, ab, ba, bb ]
[ ac, ad, bc, bd ]
[ ca, cb, da, db ]
[ cc, cd, dc, dd ], 4X4 matrix
To expand again, multiply it by { a, b, c, d } and a matrix of size 8X8 will be formed.

Expanded Matrix - > [ aaa, aab, aba, abb, baa, bab, bba, bbb ]
[ aac, aad, abc, abd, bac, bad, bbc, bbd ]
[ aca, acb, ada, adb, bca, bcb, bda, bdb ]
[ acc, acd, adc, add, bcc, bcd, bdc, bdd ]
[ caa, cab, cba, cbb, daa, dab, dba, dbb ]
[ cac, cad, cbc, cbd, dac, dad, dbc, dbd ]
[ cca, ccb, cda, cdb, dca, dcb, dda, ddb ]
[ ccc, ccd, cdc, cdd, dcc, dcd, ddc, ddd ]

이것은 두 개의 초기 확장 행렬입니다. 문자 시퀀스 "bcc"를 얻었다고 가정하면 바로 왼쪽 시퀀스인 "add"를 반환해야 합니다. 또한, 행렬이 순환적이라고 가정하면, 즉 주어진 시퀀스가 ​​(i, 0)에 있으면 (i, N-1)에서 시퀀스를 반환합니다.

Input: abb
Output: aba
Explanation: The sequence just left to abb is aba in the 8X8 matrix.

Input: aadc
Output: aacd

Input: abbcd
Output: abbcc

해결 방법을 찾는 방법

먼저 문제를 생각해 보세요. , 생각나는 유일한 해결책 해결책은 주어진 시퀀스를 포함하지만 그다지 복잡해 보이지는 않는 확장 행렬을 찾는 것입니다. 먼저 행렬을 구성한 다음 시퀀스를 검색해야 합니다.

효율적인 접근

초기 확장 행렬을 살펴본 후 이전 요소를 확인할 수 있는 패턴을 발견했습니다. 즉,

  • 은 마지막 인덱스부터 시작하여 문자 시퀀스를 순회합니다.

  • 인덱스 요소가 'b' 또는 'd'인 경우 이를 'a' 또는 'c'로 변경하고 배열 순회를 중지합니다.

  • 색인 요소가 'a' 또는 'c'인 경우 'b' 또는 'd'로 변경하고 다음 색인으로 이동하여 확인합니다.

Example

위 메서드의 C++ 코드

#include <bits/stdc++.h>
using namespace std;
int main (){
   string seq = "abbcd";
   int n = seq.length ();
   // traverse through the string from last.
   for (int i = n; i >= 0; i--){
      // if the element is b or d, change them and stop traversing.
      if (seq[i] == &#39;b&#39;){
      seq[i] = &#39;a&#39;;
      break;
   }
   if (seq[i] == &#39;d&#39;){
      seq[i] = &#39;c&#39;;
      break;
   }
   // if an element is b or d, change them and move to the next element.
   if (seq[i] == &#39;a&#39;)
      seq[i] = &#39;b&#39;;
   else if (seq[i] == &#39;c&#39;)
      seq[i] = &#39;d&#39;;
   }
   cout << "The Previous sequence is: " << seq;
   return 0;
}

Output

The previous sequence is: abbcc

결론

이 글에서는 확장 문자 행렬과 그 구성 방식에 대해 논의했습니다. 또한 확장 행렬에서 이전 요소를 찾는 방법도 논의했습니다. 우리는 확장된 문자 매트릭스에 의해 생성된 패턴을 이해함으로써 이 문제를 해결했습니다.

우리는 이 문제를 해결하기 위해 C, Java, Python 등과 같은 프로그래밍 언어로 작성할 수 있는 C++ 코드에 대해서도 논의했습니다. 이 튜토리얼이 도움이 되기를 바랍니다.

위 내용은 확장 행렬에서 C++의 이전 요소를 반환합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제