uva 10098 生成字典续序列

生成字典续序列。

//// main.cpp// 10098_1//// Created by Fangpin on 15/3/7.// Copyright (c) 2015年 FangPin. All rights reserved.//#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;char s[23],ans[23];void dfs(int deep,int len){if(deep==len)puts(ans);else{for(int i=0;i<len;++i){if(!i || s[i]!=s[i-1]){int c1=0,c2=0;for(int j=0;j<deep;++j) if(ans[j]==s[i]) ++c1;for(int j=0;j<len;++j) if(s[i]==s[j]) ++c2;if(c1<c2){ans[deep]=s[i];dfs(deep+1,len);}}}}}int main(int argc, const char * argv[]) {// insert code here…int n;scanf("%d",&n);while(n–){scanf("%s",s);memset(ans,0,sizeof(ans));int len=strlen(s);sort(s,s+len);dfs(0,len);printf("\n");}return 0;}也可以使用c++库函数next_permutation(iter.begin(),iter.end())

//// main.cpp// 10098//// Created by Fangpin on 15/3/7.// Copyright (c) 2015年 FangPin. All rights reserved.//#include <iostream>#include <cstdio>#include <cstring>#include <string>#include <algorithm>using namespace std;int main(int argc, const char * argv[]) {// insert code here…int n;scanf("%d",&n);char s[29];while(n–){scanf("%s",s);int len=strlen(s);sort(s,s+len);printf("%s\n",s);while(next_permutation(s,s+len)){printf("%s\n",s);}printf("\n");}return 0;}

,与其临渊羡鱼,不如退而结网。

uva 10098 生成字典续序列

相关文章:

你感兴趣的文章:

标签云: