當前位置:首頁 » 編程語言 » c語言排列組合

c語言排列組合

發布時間: 2022-01-23 06:08:43

『壹』 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語言編寫一個排列組合的程序

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

『叄』 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語言怎麼實現排列組合啊比如從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語言如何實現任意數排列組合,新手求助,急

  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語言有什麼快速的函數可以表示排列組合嗎

#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;
}

『玖』 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>
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樓的出現的是一串數字,一行

熱點內容
在線音樂源碼 發布:2025-09-16 22:57:39 瀏覽:680
api開發php 發布:2025-09-16 22:06:15 瀏覽:594
mysql自動備份linux 發布:2025-09-16 21:58:33 瀏覽:942
怎麼用自己的伺服器ip做域名 發布:2025-09-16 21:49:57 瀏覽:915
vc為什麼能編譯不能用 發布:2025-09-16 21:48:03 瀏覽:742
編譯原理沖突圖的定義 發布:2025-09-16 21:26:45 瀏覽:808
安卓手機芯哪個牌子好 發布:2025-09-16 21:26:33 瀏覽:206
centos編譯安裝git 發布:2025-09-16 21:19:55 瀏覽:975
安卓系統如何使用手機優盤 發布:2025-09-16 21:14:01 瀏覽:333
在手機上注冊公積金如何設置密碼 發布:2025-09-16 21:07:01 瀏覽:824