※ 引述《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