请教C编程问题,把一列无序数组比如:5,3,9,8,7,1,0 拆分成...

来源:百度知道 编辑:UC知道 时间:2024/09/28 14:27:16
请教C编程问题,把一列无序数组比如:5,3,9,8,7,1,0 拆分成由其中三个数组元素组成的所有不重复数组,并打印出结果。谢谢。

这是一个排列问题,有C(73)种排法,
可以这样设计算法,先选一个5,然后到余下的6个中先两个,又可以这样选,先选 一个3,然后到后面的5个中选一个,故可用循环来解决,
for(i=0;i<=4;i++) //循环至7所在的位置;为什么?
{
for(j=i+1;j<=5;j++)//从i的后一个数开始选第二个数,可以到5所在的置。
{
for(k=j+1;k<=6;k++)
printf("%d %d %d\n",a[i],a[j],a[k]);//a为存那几个数的数组,每输出一种情况换行。
}
}
程序是这样的
#include<stdio.h>
void main()
{
int i,j,k,a[7]={5,3,9,8,7,1,0};
for(i=0;i<=4;i++) //循环至7所在的位置;为什么?
{
for(j=i+1;j<=5;j++)//从i的后一个数开始选第二个数,可以到5所在的置。
{
for(k=j+1;k<=6;k++)
printf("%d %d %d\n",a[i],a[j],a[k]);//a为存那几个数的数组,每输出一种情况换行。
}
}
}