문자열 의 조합
문자열 을 입력 하여 이 문자열 의 모든 조합 을 출력 합 니 다.예 를 들 어 abc 를 입력 하면 a, b, c, ab, ac, bc, abc 가 조합 되 어 있 습 니 다.
분석:
예전 에 비슷 한 문 제 를 풀 었 고 문자열 의 모든 배열 을 풀 었 으 며 재 귀적 인 사 고 를 사용 했다.
바 이 너 리 방법
이 문제 에서 제 가 생각 한 첫 번 째 방식 은 2 ^ n 의 특수성 을 고려 한 것 입 니 다. 만약 에 문자열 의 길이 가 5 라면 우 리 는 2 ^ 5 의 조합 방식 이 있 을 수 있 습 니 다. 이 진 으로 표시 하고 i 위 는 1 이 며 출력 string [i] 을 표시 합 니 다.0 이면 출력 하지 않 습 니 다.
알고리즘 은 다음 과 같 습 니 다.
재 귀 방법
배열 과 마찬가지 로 재 귀적 인 사고방식 으로 string 의 조합 을 계산 할 때 string [0] 이 결과 에 저장 되 었 는 지 여 부 를 고려 하여 두 번 재 귀 를 한다. 한 번 은 stirng [0] 을 포함 하고 다른 하 나 는 string [0] 을 포함 하지 않 는 다. 여기 서 우 리 는 하나의 창 고 를 사용 하여 결 과 를 저장 해 야 한다.스 택 의 상 태 를 유지 하 는 것 이 관건 입 니 다. 배열 과 유사 합 니 다.
알고리즘:
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <math.h>
using namespace std;
int main()
{
char *string = "abcdef";
int len = strlen(string);
if(len > 32)
return -1;
int number = (int)pow(2.0, len);
for(int i = 0 ; i < number; i++)
{
for(int j = 0; j < len; j++)
{
if((i>>j) & 1) // 1, 1 string i
cout << string[j];
}
cout << endl;
}
return 0;
}
요약:
첫 번 째 는 바 이 너 리 방식 으로 정수 길이 의 제한 을 받 아 int 는 32 글자 만 표시 할 수 있다.두 번 째 방식 은 재 귀적 인 사고방식 으로 하나의 창 고 를 유지 하고 결 과 를 보존 하 는 데 사용 하 는데 이런 방식 은 비교적 직관 적 이 고 이해 하기 쉬 우 므 로 두 번 째 방법 을 추천 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Docker를 사용한 React 및 .NET Core 6.0 샘플 프로젝트 - 1부이 기사에서는 Entity Framework Core Code First 접근 방식을 사용하는 ASP.NET Core 6.0 WEP API의 CRUD(만들기, 읽기, 업데이트 및 삭제) 작업에 대해 설명합니다. 웹 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.