C语言如何实现任意数排列组合,新手求助,急

2024-12-01 23:15:22
推荐回答(4个)
回答1:

  1. 求排列组合没有简单方法。方法只有一个,枚举。

  2. 有几个位置需要列举,就需要几个循环。如果循环数量太多,可以用函数递归来枚举。

    例程:

    #include
    int main(){
        int a[4]={1,3,4,7};        //第一个位置
        int b[4]={2,5,8,10};    //第二个位置
        int c[4]={6,9,11,12};    //第三个位置
        int i,j,k;
        for(i=0;i<4;i++)
        for(j=0;j<4;j++)
        for(k=0;k<4;k++)
           printf("%d %d %d\n,",a[i],b[j],c[k]);//输出一种排列
        getch();
        return 0;
    }

回答2:

#include
main(){
int a[4]={1,3,4,7};
int b[4]={2,5,8,10};
int c[4]={6,9,11,12};
int i,j,n;
for(i=0;i<4;i++)
for(j=0;j<4;j++)
{printf("%d&%d\t,",a[i],b[j]);
printf("%d&%d\t,",a[i],c[j]);
printf("%d&%d\t,",b[i],c[j]);
}
getch();
}

回答3:

#include
#include
#include
int main()
{
int a[3][4]={{1,3,4,7},{2,5,8,10},{6,9,11,12}};
int i,j,x,y;
srand((unsigned)time(NULL));
i=rand()%3;
x=rand()%3;
j=rand()%4;
y=rand()%4;
printf("%d",a[i][j]);
printf(" %d\n",a[x][y]);
return 0;
}

回答4:

  • 有几个位置需要列举,就需要几个循环。如果循环数量太多,可以用函数递归来枚举。

    例程:

    12345678910111213   #includeint main(){    int a[4]={1,3,4,7};        //第一个位置    int b[4]={2,5,8,10};    //第二个位置    int c[4]={6,9,11,12};    //第三个位置    int i,j,k;    for(i=0;i<4;i++)    for(j=0;j<4;j++)    for(k=0;k<4;k++)       printf("%d %d %d\n,",a[i],b[j],c[k]);//输出一种排列    getch();    return 0;}