、输出2,4,6,8,10,12,14,16八个数中选2个的所有排列及排列数目。
int main(){
int base[8] = {2,4,6,8,10,12,14,16};
int count=0;
for (int i=0;i<8;i++){
for (int j=0;j<8;j++){
if (i != j){
printf("%d,%d\n",base[i],base[j]);
count++;
}
}
}
printf("排列数:%d",count);
return 0;
}
#include <stdio.h>
using namespace std;
int main(){
int cnt=0;
int list[8]={2,4,6,8,10,12,14,16};
for (int i=0;i<8;i++){
for (int j=0;j<8;j++){
printf("[%d %d] ",list[i],list[j]);
}
printf("\n");
}
}
从第一个元素开始,将其与其它的元素组合,因为自身不能与自身组合,所以使用(i!=j)判断是否为自身
#include<stdio.h>
int main()
{
int a[8]={2,4,6,8,10,12,14,16};
int i,j,count=0;
for(i=0;i<8;i++)
for(j=0;j<8;j++)
{
if(i!=j)
{
printf("%d %d\n",a[i],a[j]);
count++;
}
}
printf("%d\n",count);
return 0;
}
所有排列这个问题可以用双循环来解决问题
至于排列数目,那倒是可以使用计数解决,提供参考代码如下:
#include<stdio.h>
int main()
{
int array[8] = { 2,4,6,8,10,12,14,16 };
int i ,j ;
int len = (sizeof(array) / sizeof(int));
int size = 0;
for (i = 0; i < len; i++)
{
for (j = 0; j < len; j++)
{
if (i != j) {
printf("排列组合信息 (%d,%d)\n", array[i], array[j]);
size++;
}
}
}
printf("所有排列共计:%d", size);
}