❶ 我有四个数(如1,3,6,7)怎么用c语言编写:四个数所有排列组合
#include<stdio.h>
#include<stdlib.h>
voidswap(int&a,int&b)
{
inttemp=a;
a=b;
b=temp;
}
voidPermutation(int*pStr,intbegin,intend)
{
if(begin==end-1)//只剩一个元素
{
inti;
for(i=0;i<end;i++)//打印
printf("%d",pStr[i]);
printf(" ");
}
else
{
intk;
for(k=begin;k<end;k++)
{
swap(pStr[k],pStr[begin]);//交换两个字符
Permutation(pStr,begin+1,end);
swap(pStr[k],pStr[begin]); //恢复
}
}
}
intmain()
{
inta[]={1,3,6,7};
Permutation(a,0,4);
getchar();
return0;
}
❷ 任意输入4个不同的数,判断这4个数最多可以组合成多少个数 c语言
/*Note:YourchoiceisCIDE*/
#include<stdio.h>
intmain(void)
{
inta[4]={1,2,0,4};
inti,j,k,l;
intb[64],t,n;
scanf("%d%d%d%d",&a[0],&a[1],&a[2],&a[3]);
t=0;
for(i=0;i<4;i++)
{
b[t]=a[i];
t++;
if(a[i]==0)
continue;
for(j=0;j<4;j++)if(i!=j)
{
b[t]=a[i]*10+a[j];
t++;
for(k=0;k<4;k++)if(i!=k&&j!=k)
{
b[t]=a[i]*100+a[j]*10+a[k];
t++;
for(l=0;l<4;l++)if(i!=l&&j!=l&&k!=l)
{
b[t]=a[i]*1000+a[j]*100+a[k]*10+a[l];
t++;
}
}
}
}
n=t;
for(i=1;i<n;i++)
{
t=b[i];
for(j=i-1;j>=0;j--)
{
if(b[j]>t)
b[j+1]=b[j];
elsebreak;
}
b[j+1]=t;
}
for(i=0;i<n;i++)
{
printf("%d ",b[i]);
if((i+1)%5==0)
printf(" ");
}
return0;
}
❸ 4个不同的数字有多少种排列组合
根据题目可知,我们可设4个不同的数字分别为a,b,c,d,那么计算排列组合数,可以采用以下几种方法:
1、枚举法
abcd、abdc,acbd,acdb,adbc,adcb,bacd,badc,bcad,bcda,bdac,bdca,cabd,cadb,cbad,cbda,cdab,cdba,dabc,dacb,dbac,dbca,dcab,dcba。
2、公式法
全排列公式
❹ C语言编写一个程序,真心求教:1.2.3.4四个数,能组合成多少个不同的三位数,都是多少
这是一个简单的排列组合,三位数,每位都有四个数字可以选择,所以就是4*4*4种组合,具体如下,不明白的话可以给你讲讲
#include <stdio.h>
int main()
{
int i,a,b,c;
int num;
i = 1;
for(a = 1; a <= 4; a++) //百位循环
for(b = 1; b <= 4; b++)//十位循环
for(c = 1; c <= 4; c++)//各位循环
{
num = a * 100 + b * 10 + c; //a*100就是百位,b*10就是十位
printf("%d:%d\n", i++, num);
}
return 0;
}
❺ 任意输入4个不同的数,判断这4个数最多可以组合成多少个数 c语言
/*Made By gangjia*/
/*输入的数据用逗号隔开*/
#include "stdio.h"
main()
{
int a,b,c,d;
int Num1 = 1000,Num2 = 1000,Num3 = 1000,Num4 = 1000;
int tempa,tempb,tempc,tempd,temp;
int Num[24];
int i = 0,j = 0,k,x = 0;
printf("please input four Number:\n") ;
scanf("%d,%d,%d,%d",&a,&b,&c,&d);
/*printf("the orgin number is:\n");*/
for(i = 0;i<4;i++)
{
for(j = 0;j<3;j++)
{ while(1)
{
Num2 = Num2/10;
if(Num2 == 0) Num2 = 1000;
if(Num2!=Num1) break;
}
for(k = 0;k<2;k++)
{ while(1)
{
Num3 = Num3/10;
if(Num3 == 0) Num3 = 1000;
if((Num3!=Num1)&&(Num3!= Num2)){
break;
}
}
while(1)
{
Num4 = Num4/10;
if(Num4 == 0) Num4 = 1000;
if((Num4!=Num1)&&(Num4!= Num2)&&(Num4!= Num3)){
break;
}
}
tempa = a*Num1;
tempb = b*Num2;
tempc = c*Num3;
tempd = d*Num4;
Num[x] = tempa+tempb+tempc+tempd;
/* printf("%d ",Num[x]); */
x++;
}
}
Num1 = Num1/10;
}
printf("\nFrom small to big:\n");
for(i = 0;i<24;i++)
{
for(j = i+1;j<24;j++)
{
if(Num[i]>Num[j])
{
temp = Num[i];
Num[i] = Num[j];
Num[j] = temp;
}
else Num[i] = Num[i];
}
printf("\t%d ",Num[i]);
if(i%5 == 4) printf("\n");
}
getch();
}
❻ 用C语言数组求4个不同的数字能组成多少个不同的4位数
请你看看排列组合。
这对你以后的开发很有帮助,是计算机科学的数学基础。
4个数字,如果不重复的就是4*3*2*1
=
24
如果可以重复的话就是4*4*4*4
=
256
❼ C语言编写一个程序,真心求教:1.2.3.4四个数,能组合成多少个不同的三位数,都是多少
将1234依次存入一个char型数组内,自定义一个全排列列函数进行4个数字的全排列运算,但每次输出时只取后3位即可达到目的。代码如下:
#include"stdio.h"
voidmyfun(char*p,inti,intn){//自定义全排列函数
intj,t;
if(i-n)
for(j=i;j<=n;j++){
t=p[i],p[i]=p[j],p[j]=t;
myfun(p,i+1,n);//全排列递归调用
t=p[i],p[i]=p[j],p[j]=t;
}
else
printf(++p[5]%10?"%s":"%s ",p+1);
}
intmain(intargc,char*argv[]){
chara[6]="1234";//多声明一个元素a[5]用来控制每行输出10个数
myfun(a,0,3);//用数组名和起末下标调用
if(a[5]%5)
printf(" ");
return0;
}
运行结果:
❽ 用C语言编程求1234四个数能组成多少互不相同且不重复的三位数
三位数有三个位置,每一个位置看作一个变量,假设为i、j、k,
互不相同且不重复的三位数,即i不等于j且j不等于k且i不等于j,用C语言逻辑表达式描述为:
i!=j&&j!=k&&i!=k
三个位置,每一个位置有1、2、3、4,四种可选值,因此其排列数为4^3 = 64种排列组合方法,三个位置互不相同,按分步乘法原理得一共有4x3x2 = 24种排列方法。编写示例代码如下:
#include<stdio.h>
intmain()
{
inti,j,k,n=0;//n用于统计个数
for(i=1;i<5;i++)
for(j=1;j<5;j++)
for(k=1;k<5;k++)
//保证三位数不重复
if(i!=j&&i!=k&&j!=k)
{
n++;
printf("%d%d%d",i,j,k);
if(n%4==0)
printf(" ");
}
printf(" 一共:%d ",n);
return0;
}
❾ 用4个数字可以组成多少个不同的三位数 C语言编程
#include<stdio.h>
intmain()
{
inti,j,k,n=0;//n用于统计个数
for(i=1;i<5;i++)
for(j=1;j<5;j++)
for(k=1;k<5;k++)
//保证三位数不重复
if(i!=j&&i!=k&&j!=k)
{
n++;
printf("%d%d%d",i,j,k);
if(n%4==0)
printf(" ");
}
printf(" 一共:%d ",n);
return0;
}
❿ 4个数字有多少种组合
4个不同的数字有24种排列组合。
可以拿4个不同的数字来进行排列组合,例如2,3,4,5这4个不同的数,当2在最高位时就有2345,2354,2435,2453,2534,2543等6个4位数,那么4个不同的数组成的4位数就有4个6那么多,即24个。
但有一种排列组合比较特珠,也就是随便3个不同的数和0一起排列组合起来的4位数就没有24个了,因为0不能排在最高位上。
排列和组合的区别:
一、意思不同
1、排列:按次序站立或摆放。
例句:哥哥把需要用的参考书排列在桌子上。
2、组合:组织成为整体。
例句:所有这些替代的组合,构成一个补偏救弊的系统。
二、侧重点不同
1、排列:从n个不同的元素中,取r个不重复的元素,按次序排列,称为从n个中取r个的无重复排列。
例句:代表们的名单是按姓氏笔画的顺序排列的。
2、组合:从n个不同的元素中,取r个不重复的元素,组成一个子集,而不考虑其元素的顺序,称为从n个中取r个的无重组和。
例句:台上的这个组合是五位光彩夺目的二八佳人组成的。