求一fortran或C语言程序,求6个元素的所有6个元素的组合.
来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/10/03 19:24:11
求一fortran或C语言程序,求6个元素的所有6个元素的组合.
如ABCDEF,组合成6个元素的组合:AABBBB、AABBCC、ABCCDD.
组合出来的每个字符组都是六个元素,但里面可以有1~6种不同的元素.
如ABCDEF,组合成6个元素的组合:AABBBB、AABBCC、ABCCDD.
组合出来的每个字符组都是六个元素,但里面可以有1~6种不同的元素.
#include<stdio.h>
void swap(char a[],int i,int j)
{
char t=a[i];
a[i]=a[j];
a[j]=t;
}
int FirstL(char a[],int n)
{
int j;
for(j=n-1;j>0;j--)
{
if(a[j-1]<a[j])
return j-1;
}
return j;
}
int FirstG(char a[],int j,int n)
{
int i;
for(i=n-1;i>j;i--)
{
if(a[j]<a[i])
return i;
}
return j;
}
void reversal(char a[],int j,int n)
{
int i,t;
for(i=j+1,t=n-1;i<t;i++,t--)
{
swap(a,i,t);
}
}
int main(void)
{
int n;
char a[100];
int i,j,k,t;
scanf("%d",&n);
scanf("%s",a);
for(i=0,t=1;i<n;i++)
{
t*=(i+1);
}
while(t--)
{
for(i=0;i<n;i++)
{
if(i==n-1)
printf("%c\n",a[i]);
else
printf("%c",a[i]);
}
if(t==0) break;
j=FirstL(a,n);
k=FirstG(a,j,n);
swap(a,j,k);
reversal(a,j,n);
}
}输出结果很多,只能截取部分,望采纳~
再问: 很感谢啊,不过我不要排列的啊,我要组合。就像我例子里面的输入ABCDEF,打印出来AACCDE、BCCDDD之类的,不要排列数。 大神能否再来一个程序,能用的话肯定追加啊~~~
再答: #include<stdio.h>
void printChar(char s,int n)
{
int i;
for(i=0;i<n;i++)
printf("%c",s);
}
void main()
{
char s[6];
int a[6];
int i;
scanf("%s",s);
for(a[0]=0;a[0]<7;a[0]++)
for(a[1]=0;a[1]<7;a[1]++)
for(a[2]=0;a[2]<7;a[2]++)
for(a[3]=0;a[3]<7;a[3]++)
for(a[4]=0;a[4]<7;a[4]++)
for(a[5]=0;a[5]<7;a[5]++)
if(a[0]+a[1]+a[2]+a[3]+a[4]+a[5]==6)
{
for(i=0;i<6;i++)
{
printChar(s[i],a[i]);
}
printf("\n");
}
}用的方法比较傻,效率也不高,见笑了...
void swap(char a[],int i,int j)
{
char t=a[i];
a[i]=a[j];
a[j]=t;
}
int FirstL(char a[],int n)
{
int j;
for(j=n-1;j>0;j--)
{
if(a[j-1]<a[j])
return j-1;
}
return j;
}
int FirstG(char a[],int j,int n)
{
int i;
for(i=n-1;i>j;i--)
{
if(a[j]<a[i])
return i;
}
return j;
}
void reversal(char a[],int j,int n)
{
int i,t;
for(i=j+1,t=n-1;i<t;i++,t--)
{
swap(a,i,t);
}
}
int main(void)
{
int n;
char a[100];
int i,j,k,t;
scanf("%d",&n);
scanf("%s",a);
for(i=0,t=1;i<n;i++)
{
t*=(i+1);
}
while(t--)
{
for(i=0;i<n;i++)
{
if(i==n-1)
printf("%c\n",a[i]);
else
printf("%c",a[i]);
}
if(t==0) break;
j=FirstL(a,n);
k=FirstG(a,j,n);
swap(a,j,k);
reversal(a,j,n);
}
}输出结果很多,只能截取部分,望采纳~
再问: 很感谢啊,不过我不要排列的啊,我要组合。就像我例子里面的输入ABCDEF,打印出来AACCDE、BCCDDD之类的,不要排列数。 大神能否再来一个程序,能用的话肯定追加啊~~~
再答: #include<stdio.h>
void printChar(char s,int n)
{
int i;
for(i=0;i<n;i++)
printf("%c",s);
}
void main()
{
char s[6];
int a[6];
int i;
scanf("%s",s);
for(a[0]=0;a[0]<7;a[0]++)
for(a[1]=0;a[1]<7;a[1]++)
for(a[2]=0;a[2]<7;a[2]++)
for(a[3]=0;a[3]<7;a[3]++)
for(a[4]=0;a[4]<7;a[4]++)
for(a[5]=0;a[5]<7;a[5]++)
if(a[0]+a[1]+a[2]+a[3]+a[4]+a[5]==6)
{
for(i=0;i<6;i++)
{
printChar(s[i],a[i]);
}
printf("\n");
}
}用的方法比较傻,效率也不高,见笑了...
求一fortran程序,取出n个连续自然数的所有n级排列.
c语言编程问题,计算出从n 个不同元素中取出m 个元素(m≤n)的组合数。编写程序
【c语言】编写程序,求数组a中前n个元素的最大值max、最小值min及平均值avg.
根据组合公式可以计算出从n个不同元素取出m 个元素的组合数,用C语言编写程序,输入2个正整数m和n,计算并输出组合数,要
已知5个元素a,b,c,e,试写出每次取4个元素的所有组合
C语言:把一个数插到已排好顺序的数组中,数组元素是9个~改程序,
C语言程序编程5. 给定一个一维数组a有N个元素,求最大值。6. 用选择法对10个数按从小到大的顺序排列。7. 有一个3
写出从a,b,c,d,e这5个元素中取出2个和3个元素的所有组合
求用C语言编个程序 很简单的
C语言程序,求3个整数的最大值.
C语言程序:求N*N矩阵的边线元素和.元素的值两位整数,由rnd()函数产生
C语言交换元素程序输入n个整数(2