GYM 100883 F.Print Mix Strings(枚举)
2017-03-14 14:34
363 查看
Description
给出两个串a,b,要求在不改变两个串内部的先后顺序的条件下把两个串并在一起,输出所有情况
Input
第一行一整数T表示用例组数,每组用例输入两个长度不超过8的串(1<=T<=100
Output
对于每组用例,以字典序升序不重复的输出所有情况,每组输出后跟一空行
Sample Input
2
a aa
ab cd
Sample Output
aaa
abcd
acbd
acdb
cabd
cadb
cdab
Solution
假设a和b串长分别为n和m,2^(n+m)枚举状态,1位置放a串,0位置放b串,之后拿map或set存起来去个重即可
Code
给出两个串a,b,要求在不改变两个串内部的先后顺序的条件下把两个串并在一起,输出所有情况
Input
第一行一整数T表示用例组数,每组用例输入两个长度不超过8的串(1<=T<=100
Output
对于每组用例,以字典序升序不重复的输出所有情况,每组输出后跟一空行
Sample Input
2
a aa
ab cd
Sample Output
aaa
abcd
acbd
acdb
cabd
cadb
cdab
Solution
假设a和b串长分别为n和m,2^(n+m)枚举状态,1位置放a串,0位置放b串,之后拿map或set存起来去个重即可
Code
#include<cstdio> #include<iostream> #include<cstring> #include<algorithm> #include<cmath> #include<vector> #include<queue> #include<map> #include<set> #include<ctime> using namespace std; typedef long long ll; #define INF 0x3f3f3f3f #define maxn 1111111 string a,b,c; char s[22]; int T,n,m; map<string,int>M; map<string,int>::iterator it; string d[maxn]; int main() { scanf("%d",&T); while(T--) { cin>>a>>b; n=a.size(),m=b.size(); M.clear(); c.clear(); int N=1<<(n+m); for(int i=0;i<N;i++) { int num1=0,num2=0; for(int j=0;j<n+m;j++) { if(i&(1<<j)) { if(num1<n)s[j]=a[num1++]; else { num1++; break; } } else { if(num2<m)s[j]=b[num2++]; else num2++; } } if(num1!=n)continue; s[n+m]='\0'; c=s; M[c]=1; } int res=0; for(it=M.begin();it!=M.end();it++)d[res++]=it->first; sort(d,d+res); for(int i=0;i<res;i++)cout<<d[i]<<endl; cout<<endl; } return 0; }
相关文章推荐
- GYM 100883 J.palprime(枚举)
- Codeforces Gym 100002 B Bricks 枚举角度
- Gym - 100543C Sums 等差数列枚举
- GYM 100883 C.Too Many Coins(水~)
- Codeforces #410(div2) B. Mike and strings (暴力枚举
- Gym 101308D Database 枚举
- GYM 100030 E.Tests Preparation(枚举)
- GYM Amman 17 J. Spilt the String 模拟,枚举
- GYM 100883 D.Card Game(二分+贪心)
- TopCoder SRM 677 Div. 2 550 - FourStrings (枚举)
- GYM 100883 E.xortion(字典树)
- GYM 100883 G.Count Mix Strings(组合数学)
- 【递推】【DFS】【枚举】Gym - 101246C - Explode 'Em All
- GYM 100712 G.Heavy Coins(枚举)
- 【DFS】【枚举】Gym - 101246G - Revolutionary Roads
- Codeforces Gym 100825 B. Delete This! (枚举 + 三分)
- GYM 100883 H.tourists(一元线性同余方程)
- 【枚举】【并查集】Gym - 101243F - Vitamins
- Sheldon Numbers GYM -- 枚举
- GYM 100883 I.Teleportia(Floyd)