Generating Fast UVA 10098
来源:程序员人生 发布时间:2014-10-08 18:19:29 阅读次数:1906次
说说:
这道题的其实就是给你一个字符串,然后输出该字符串所含字符能构成的全部的串,并按字典升序输出。解法的话,无非就是递归实现。先将原字符串排序,然后逐一确定每个位置上的字符。为了防止有重复的字符串出现,每个位置上的字符不能与之前相同。具体的解释请参见刘汝佳的《算法竞赛入门经典》P118,生成可重集的排列。
源代码:
#include <stdio.h>
#include <string.h>
#define MAX 10+5
char s[MAX];
char p[MAX];
int N;
void print_permutation(int);
int main(){
int n,j,i;
char c;
// freopen("data","r",stdin);
scanf("%d",&n);
while(n--){
scanf("%s",s);
N=strlen(s);
p[N]='