當前位置:首頁 » 編程語言 » c語言排列組合
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言排列組合

發布時間: 2022-01-18 08:35:16

『壹』 c語言如何實現任意數排列組合,新手求助,急

  1. 求排列組合沒有簡單方法。方法只有一個,枚舉。

  2. 有幾個位置需要列舉,就需要幾個循環。如果循環數量太多,可以用函數遞歸來枚舉。

    常式:

    #include<stdio.h>
    intmain(){
    inta[4]={1,3,4,7};//第一個位置
    intb[4]={2,5,8,10};//第二個位置
    intc[4]={6,9,11,12};//第三個位置
    inti,j,k;
    for(i=0;i<4;i++)
    for(j=0;j<4;j++)
    for(k=0;k<4;k++)
    printf("%d%d%d ,",a[i],b[j],c[k]);//輸出一種排列
    getch();
    return0;
    }

『貳』 c語言編程排列組合

void Show(int n,int len ,char str[], char p[],int *i){/*函數功能說明: 密碼窮舉法 遞歸演算法參數說明:len 密碼可選元素的個數,實際等於 strlen(str); n 密碼位數。 STR[]密碼表。 *p 密碼排列組合的臨時存檔*/int a;n--;for(a=0; a < len; a++){p[n]=str[a]; if(n==0)printf("%d:%s ",(*i)++,p); if(n0)Show(n,len , str,p,i);}} /*驅動程序 用於測試*/ int main(void){char str[]="abcdef";//密碼表 可選元素集合可根據選擇修改 int n=4;//密碼位數,根據具體應用而定。 int len=strlen(str);//用於密碼元素集合計數。 char p[20];//存放排列組合的密碼,用於輸出。 int num=0;//存放統計個數的整數值, int *i=&num;//計數器 地址。 p[n]='\0';//這個不用說啦。 printf("\n%d 位密碼,每個密碼有%d個選擇的話,共有:%d個組合。\n",n,len,*i);return 0;}
以上回答你滿意么?

『叄』 用c語言怎麼實現排列組合啊比如從100個數裡面任意選出5個數,即C100 5……

#include<stdio.h>
void main()
{
int n = 100;
int m = 5;
int n1 = 1, m1 = 1;
for(int i = 1; i <= m; i++)
{
n1 *= n - i + 1;
m1 *= i;
}
n1 = n1/m1;
printf("C100 5 = %d\n",n1);
}
從n中選出m個,只要改變n和m的值即可,VS2010下測試通過。

『肆』 C語言 排列組合

發個C#的代碼:

int[] a = { 1 , 2 , 3 , 4 , 5 , 6 };
int weishu = 6;

int weishu2 = weishu - 1;
int zuida = (int)Math.Pow( 2 , weishu2 );
List<int[]> list = new List<int[]>();
for ( int i = 0 ; i < zuida ; i++ )
{
int[] b = (int[])a.Clone();
for ( int j = 0 ; j < weishu2 ; j++ )
{
int c = i >> j;
if ( (c & 1) == 1 )
{
int tmp = b[ j ];
b[ j ] = b[ j + 1 ];
b[ j + 1 ] = tmp;
}
}
list.Add( b );
}

System.Text.StringBuilder sb = new System.Text.StringBuilder();
sb.AppendLine( string.Format( "共 {0} 個結果" , list.Count ) );
foreach ( int[] aa in list )
{
for ( int i = 0 ; i < aa.Length ; i++ )
{
sb.Append( aa[ i ] );
if ( (i & 1) == 1 )
sb.Append( '\t' );
}
sb.AppendLine();
}
Console.WriteLine( sb.ToString() );

運行結果:

共 32 個結果
12 34 56
21 34 56
13 24 56
23 14 56
12 43 56
21 43 56
13 42 56
23 41 56
12 35 46
21 35 46
13 25 46
23 15 46
12 45 36
21 45 36
13 45 26
23 45 16
12 34 65
21 34 65
13 24 65
23 14 65
12 43 65
21 43 65
13 42 65
23 41 65
12 35 64
21 35 64
13 25 64
23 15 64
12 45 63
21 45 63
13 45 62
23 45 61

『伍』 C語言 排列組合程序

shi 是用C來編程嗎

『陸』 C語言矩陣的排列組合

#include<stdio.h>
intmain()
{
intm,i,j,n;
scanf("%d",&m);
for(i=1;i<=10000;i++)
{
n=m;
for(j=i-1;j>=1;j--)//因子之和
{
if(i%j==0)
n=n-j;
}
if(n==0)printf("%d ",i);
}

system("pause");
return0;
}

『柒』 C語言的一個排列組合問題

#include<stdio.h>
void main()
{
int a=1,b=2,c=3,d=4,e=5;
int i,j,k,l,sum=15,n=0;

for(i=2;i<6;i++)
for(j=1;j<6;j++)
if(j!=2)
for(k=1;j<6;j++)
if(j!=3)
for(l=1;l<6;l++)
if(i!=j&&i!=k&&i!=l&&i!=(sum-i-j-k-l))
if(j!=k&&j!=l&&j!=(sum-i-j-k-l))
if(k!=l&&k!=(sum-i-j-k-l)&&l!=(sum-i-j-k-l))
{
printf("甲%d\t乙%d\t丙%d\t丁%d\t戊%d\n\n",i,j,k,l,sum-i-j-k-l);
n++;}
printf("有%d中排列組合名,詳見如上圖:\n",n);

}
貌似我的最清新明了 2樓的出現的是一串數字,一行

『捌』 用C語言編寫一個排列組合的程序

三個for循環就可以搞定,我電腦馬上沒有電了,現在來不及給你寫出完成程序,明天起床還沒有人回答你我再給你寫出來

『玖』 C語言:循環結構(排列組合)

#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
for (int i=n;i<=n+3;i++)
{
for (int j=n;j<=n+3;j++)
{
if(i==j) continue;
for (int k=n;k<=n+3;k++)
{
if(i==k||j==k) continue;
printf("%d%d%d ",i,j,k);
}
}
}
printf("\n");
return 0;
}

『拾』 c語言有什麼快速的函數可以表示排列組合嗎

#include<stdio.h>
intcom(intm,intn)//m中取n個
{
inti,j,sum=1;
for(i=m,j=0;j<n;j++,i--)
{
sum=sum*i/(j+1);
}
returnsum;
}
intmain()
{
inti;
i=com(5,3);
printf("%d",i);
return0;
}