9 도 oj 1120 재 귀 (dfs)

제목 주소:http://ac.jobdu.com/problem.php?pid=1120
문 제 는 문자열 을 입력 하여 모든 배열 의 가능 한 출력 을 구 하 는 것 입 니 다.
code:
#include <stdio.h>
#include <string.h>
char s[10];
bool visited[10];
int n;
void DFS(char a[], int len)
{
        int i;
        if (len == n)
        {
                a[n] = '\0';
                printf(a);
                printf("
"); return; } for (i = 0; i < n; i++) { if (!visited[i]) { visited[i] = true; a[len] = s[i]; DFS(a, len + 1); visited[i] = false; } } } int main() { while (scanf("%s", s) != EOF) { char a[10]; memset(visited, 0, sizeof(visited)); n = strlen(s); DFS(a, 0); printf("
"); } return 0; }

또 다른 해법 이 있다.
STL 함수 사용
code:
#include <stdio.h>
#include <algorithm>
#include <string.h>
using namespace std;
int main()
{
        char s[10];
        while (scanf("%s", s) != EOF)
        {
                int n = strlen(s);
                do {
                        puts(s);
                } while (next_permutation(s, s + n));
                printf("
"); } return 0; }

좋은 웹페이지 즐겨찾기