问题是这样的
从键盘输入四个数字
如 5 4 7 2
能组成多少个互不相同且无重复数组
如
5472
5427
5742
.
.
.
.
笨死了想不出来呢
----------------解决方案--------------------------------------------------------
4!
----------------解决方案--------------------------------------------------------
数学问题 排列与组和
----------------解决方案--------------------------------------------------------
你可以想像有印有4个数字的小球拿在手里,依次放在桌面
1、第一次你有4种选择,放下一个后,剩3个球
2、第二次有3种选择
3、依次类推,第三次2种,第四次1种
所以共有4×3×2×1=4!种不同的方法
----------------解决方案--------------------------------------------------------
perm递归调用问题,,,,,
----------------解决方案--------------------------------------------------------
问题是这样的
从键盘输入四个数字
如 5 4 7 2
能组成多少个互不相同且无重复数组
如
5472
5427
5742
.
.
.
.
笨死了想不出来呢
这个问题好象有点.............不管从键盘输入哪些四个不同数字答案都是一样的!!!!!定义定义四个变量,用四个FOR循环实现.把每个数都看成1234....
----------------解决方案--------------------------------------------------------
不知道我的思想对了没有
----------------解决方案--------------------------------------------------------
# include<stdio.h>
void perm(int list[],int k,int m);
void swap(int *m,int *n);
void main()
{
int list[4];
int i;
printf("please the numbers to be permed: ");
for(i=0;i<4;i++)
scanf("%d",&list[i]);
printf("the permed array is: ");
perm(list,0,3);
return;
}
void perm(int list[],int k,int m)
{
int i=0,j;
if(k==m)
{
for(i=0;i<4;i++)
printf("%d",list[i]);
printf("\n");
}
else
{
for(j=k;j<=m;j++)
{
swap(&list[k],&list[j]);
perm(list,k+1,m);
swap(&list[k],&list[j]);
}
}
}
void swap(int *m,int *n)
{
int temp;
{
temp=*m;
*m=*n;
*n=temp;
}
}
----------------解决方案--------------------------------------------------------