C 求排列組合,幫忙看看到底錯在哪,怎麼改

時間 2021-05-07 20:00:59

1樓:

主要有兩個問題:

1.是字串操作。每個字串末尾都必須有個結束符\0,否則strcat()就將陣列越界從而搞亂記憶體。

另外分配記憶體時你也要多分配一個位元組來存放結束符\0,改動的地方很多,你可以對照原來的程式看改了的地方。

2.在函式combination中倒數第4行for(int i=c(n-1,r-1);i#include

using namespace std;

int c(int n,int k) //計算從n各種選k個的取法

void combination(int n,int r,char *a)

while(n<=r||r<1||n>9);

//處理

char **a=new char*[c(n,r)];

for(i=0;i

//輸出

cout<<"組合方式如下:"<

for(i=0;i

for(i=0;i

delete a;

return 0;}

2樓:匿名使用者

遞迴太難看懂,還是用別的方法吧:

#include

using namespace std;

int main()

num = new int[base];

bin = new int[base];

for(i = 0; i < base; i++)num[i] = i + 1;

for(i = 0; i < base - com; i++)bin[i] = 0;

for(; i < base; i++)

bin[i] = 1;

while(1)

if(k == com)

cout << endl;

}if(!flag)

break;

j = 1;

for(i = base - 1; i > -1; i--)for(i = 0; i < com; i++)if(i == com)

flag = 0;

}cout << "共有" << c << "種" << endl;

delete bin;

delete num;

return 0;}

c陣列元素排列組合,c 一個陣列元素排列組合

從一個集合裡取出n個元素組合,當n 3時,用迴圈表述比較方便。string values console.writeline 取2個組合 for int i 0 i values.length 1 i console.writeline 取3個組合 for int i 0 i values.leng...

排列組合求概率的問題,排列組合概率問題

設n 2k 1,則p m n c 2k,k 1 2 2k 1 1 k 1 其中c n,m 代表n個數裡取m個的不同組合個數。求出c 2k,k 1 2 2k 1 是錯誤的,因為這個求解只是套了個二項式公式,而沒有考慮到m直到最後一步前,向來位於x軸右側這個重要的限制條件。這是概率論裡的一個著名問題,叫...

排列組合C几几怎麼算的,排列組合公式誰知道,就是c几几的,怎麼算

排列組合c的公式 c n,m a n,m m n m n m 與c n,m c n,n m n為下標,m為上標 例如c 4,2 4 2 2 4 3 2 1 6,c 5,2 c 5,3 排列組合c計算方法 c是從幾個中選取出來,不排列,只組合。c n,m n n 1 n m 1 m 例如c53 5 4...