주어진 N , A , 및 B . 동일한 수의 A 로 N보다 큰 수를 찾으십시오. 및 B 숫자. 예를 들어 보겠습니다.
N = 1234 A = 2 B = 3
주어진 자릿수의 모든 가능성을 확인해야 합니다. 숫자를 구성하는 두 자리 숫자가 있습니다. 그리고 숫자의 각 자릿수는 동일해야 합니다.
알고리즘
-
A, B, N을 초기화합니다.
-
재귀 함수를 작성하십시오.
-
현재 숫자가 N 보다 큰지 확인 동일한 수의 A 및 B 숫자.
-
위의 조건을 만족하면 숫자를 반환합니다.
- 결과에 숫자 A를 더하세요.
- 결과에 숫자 B를 더하세요.
- 위의 두 개 중 최소 개수로 함수를 재귀적으로 호출합니다.
-
구현
다음은 위의 알고리즘을 C++로 구현한 것입니다.
#include <bits/stdc++.h> using namespace std; long getNextGreaterElement(long result, int A, int A_Count, int B, int B_Count, int N) { if (result > 1e11) { return 1e11; } if (A_Count == B_Count && result >= N) { return result; } return min(getNextGreaterElement(result * 10 + A, A, A_Count + 1, B, B_Count, N), getNextGreaterElement(result * 10 + B, A, A_Count, B, B_Count + 1, N)); } int main() { int N = 1234; int A = 2; int B = 3; cout << getNextGreaterElement(0, A, 0, B, 0, N) << endl; return 0; }
출력
위의 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.
2233