전체 배열 귀속(검색) 및 라이브러리 함수의 응용 귀속 예제poj1731

2349 단어
첫 번째 방법은 귀속을 사용하는 것이다. 함수를 여러 번 호출하면 시간이 길어질 수 있으므로 귀속이 아닌 라이브러리 함수를 사용하는 것을 권장한다
여기는 검색으로 이해할 수 있어요.
다섯 자리수: 수조로 처리하면 이해가 돼요.
#include <stdio.h>
#include <string.h>

int array[10];
bool used[10];

const int n=5;

void print()
{
	for(int i=1;i<=n;i++)
		printf("%d",array[i]);
	puts("");
}

void dfs(int index)
{
//------------- --------------//
	if(index==n+1){
		print();
		return ;
	}
//-------------- ---------------//
	for(int i=1;i<=n;i++)
		if(!used[i]){
			array[index]=i;
			used[i]=true;
			dfs(index+1);
			// 
			used[i]=false;
		}
}

int main()
{
	//freopen("out.txt","w",stdout);
	memset(used,false,sizeof(used));
	dfs(1);
	return 0;
}

c++가 c보다 좋지 않습니다.
#include <iostream>
#include <algorithm>
#include <string>

using namespace std;

int main()
{
    string str;
    cin >> str;
    sort(str.begin(), str.end());
    cout << str << endl;
    while (next_permutation(str.begin(), str.end()))
    {
        cout << str << endl;
    }
    return 0;
}

c 코드
#include <cstdio>
#include <algorithm>
#include <cstring>
#define MAX 100

using namespace std;

int main()
{
    int length;
    char str[MAX];
    gets(str);
    length = strlen(str);
    // *** 
    sort(str, str + length);
    puts(str);
    while (next_permutation(str, str + length))
    {
        puts(str);
    }
    return 0;
}

예제:
제목의 뜻은 순서를 정하는 것이지만, 같은 것이 중복되어 나타날 수 없다는 것이다
#include<stdio.h>
#include<algorithm>
#include<string.h>
using namespace std;

char a[205];
bool used[205];
char str[205];
int len;

void dfs(int index)
{
    char last='\0';// ( , )
    if(index==len){
        str[len]='\0';
        puts(str);
        return ;
    }

    for(int i=0;i<len;i++){
        if(!used[i]&&a[i]!=last){// , 
            str[index]=a[i];// index, i, 
            used[i]=true;
            last=a[i];
            dfs(index+1);
            used[i]=false;
        }
    }

}

int main()
{
    while(gets(a))
    {
        len=strlen(a);
        memset(used,false,sizeof(used));
        sort(a,a+len);
        dfs(0);
    }
    return 0;
}

좋은 웹페이지 즐겨찾기