C++字符串输出问题(答的好还有大量加分!!!)

来源:百度知道 编辑:UC知道 时间:2024/06/06 15:32:23
我想做一个程序,输入3个数,如1 ,1 ,2 —— 从而控制字符a,b,c的输出数目的全排列组合。比如输入 1,1,2,打印显示的就是1个a和1个b和2个c的全排列组合:
abcc
acbc
accb
bacc
bcac
bcca
cabc
cbac
cbca
cacb
ccab
ccba
当然abc顺序不要求。晴高人中的高人用C++帮写下。能运行的。如果能运行,再给50分!小弟不食言!
真是高手众多阿!一楼的大哥理解错意思了,我要的是自己输入a,b,c的个数,能不能改改?3搂的大哥的程序很好,可惜我用的这段代码要弄到MFC中,要C++.因此你用的C编程不能兼容。而且最后我要输出到记事本里,所以我得看看大家的代码哪个更适合我得程序。高手们少安毋躁!

#include<iostream>
using namespace std;
long total,n[4],ans[1000],use[1000];
void cou()
{
for (int a=1;a<=total;++a)
{
if (ans[a]==1) printf("a");
if (ans[a]==2) printf("b");
if (ans[a]==3) printf("c");
}
printf("\n");
}
void search(long x)
{
if (x==total+1) cou();
for (int a=1;a<=3;++a)
{
if (use[a]<n[a])
{
ans[x]=a;
use[a]++;
search(x+1);
use[a]--;
}
}
}
int main()
{
scanf("%d %d %d",&n[1],&n[2],&n[3]);
total=n[1]+n[2]+n[3];
for (int a=1;a<=3;++a)
{
if (use[a]<n[a])
{
ans[1]=a;
use[a]++;
search(2);
use[a]--;
}
}
system("pause");
}

//最多可以输入1000个字符的串; 分来

想了一下,
其实是数学上的排列:
假如有x个a字符,y个b字符,z个c字符,一共有多少种排列?
但是问题的