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;} 從一個集合裡取出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 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...c陣列元素排列組合,c 一個陣列元素排列組合
排列組合求概率的問題,排列組合概率問題
排列組合C几几怎麼算的,排列組合公式誰知道,就是c几几的,怎麼算