看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《fenixII (喔)》之銘言: : 最近遇到要寫一個產生所可能排列的程式 : 假設有3個元素 0 ~ 2 : 當我輸入2的時候 : 希望能產生如下的結果 : 0 0 : 0 1 : 0 2 : 1 0 : 1 1 #include <string> #include <cstring> using namespace std; string permu(int n); string permu(int m, int n); int main(int argc, char *argv[]) { int n = atoi(argv[1]); cout << permu(n) << endl; system("PAUSE"); return 0; } string permu(int n) { return permu(n, n); } string permu(int m, int n) { if (n <= 0) return "$"; //Base case //Following: Recursive case int i; string r; for(i=0; i<=m; i++) { string sub1 = permu(m, n-1); char* sub = strtok((char*)(sub1.c_str()), " "); while (sub != NULL) { r += (char(i+'0') + string(sub) + ' '); sub = strtok(NULL, " "); } } return r; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.112.224.30