두 개의 숫자 n과 k가 있다고 가정합니다. 세 가지 유형의 문자 'a', 'b' 및 'c'만 사용하여 문자열 S를 생성하려고 합니다. k를 초과하지 않는 회문인 문자열 S의 부분 문자열의 최대 길이입니다.
따라서 입력이 n =3과 같으면; k =2이면 출력은 "aab"가 됩니다. 길이가 3이고 회문 부분 문자열이 길이가 2 이상인 "aa"이기 때문입니다. (다른 답변도 가능합니다.)
단계
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
S := a blank string j := 0 for initialize i := 0, when i < n, update (increase i by 1), do: S := S concatenate (j + ASCII of 'a') as character j := (j + 1) mod 3 return S
예시
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
#include <bits/stdc++.h> using namespace std; string solve(int n, int k) { string S = ""; int j = 0; for (int i = 0; i < n; i++) { S += j + 'a'; j = (j + 1) % 3; } return S; } int main() { int n = 3; int k = 2; cout << solve(n, k) << endl; }
입력
3, 2
출력
abc