整数n的全排列

第一道用搜索码的、得纪念一下

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <string>
#include <algorithm>
using namespace std;

int n;
int visit[10], a[10];

void dfs(int pos) {
	if (pos == n) {			//递归出口 
		for (int i = 0; i<n; i++)
			cout << a[i];
		cout << endl;
		return ;
	}
	
	for (int i = 1; i<=n; i++) {
		if (!visit[i]) {
			visit[i] = 1;		//标记已经访问过 
			a[pos] = i;
			dfs(pos+1);		//搜索下一个数 
			visit[i] = 0;	//回溯 
		}
	}
}


int main() {
	
	while (cin >> n) {
		memset(visit, 0, sizeof(visit));
		dfs(0);
	}
		
	return 0 ;
}


posted @ 2015-10-06 13:21  Tovi  阅读(310)  评论(0编辑  收藏  举报