[問題] 請問關於排列組合程式
開發平台(Platform):DevC++
問題(Question): 我想寫個排列組合的程式C n取r的那種...
(不考慮字元相同但排序不同的組合)
但是想要讓使用者自訂n和r的數字...
我是先訂一個很大的陣列塞進字元串,
然後用指標下去跑,但是自訂r的話就不知道該怎做
以下是很弱的程式碼。。。還有想問的問題
#include <stdio.h>
#include <stdlib.h>
int main(void){
char list[40]; //定義陣列
int chars = -1;
int a;
scanf("%d",&a);
printf("%d\n",a);
對不起這邊就出現問題了...我只要加了上面這三行,程式在下面秀出排列組合字樣
時就會自動結束...但我只要註解掉上面這三行就可以正常跑!?
另外這三行跟程式沒有關係,只是我在一開始測試用的...
printf("輸入排列組合的字元串,數目請小於40");
char *i,*j,*k;
//輸入字串到陣列
while(a!=0){
int inp = getchar();
if(inp == '\n'){break;}
if(inp == EOF){return 0;}
chars++;
list[chars]=inp;
list[chars+1]=EOF;
}
//排列組合
for(i=list;*i!=*j;*i++){
for(j=i+1;*j!=*k;*j++){
for(k=j+1;*k!=EOF;*k++){
printf("%c%c%c\n",*i,*j,*k);
}
}
}
system("pause");
return 0;
}
這個程式現在小於40個字以內可以組合出不重複的組合...但因為我只有3個指標
所以現在等於是C n取3的狀況...想請問該如何讓r=3改成使用者自訂r呢?
對不起我問題很多...在這邊謝過各位高手> <
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.123.223.131
推
08/12 02:37, , 1F
08/12 02:37, 1F
推
08/12 02:40, , 2F
08/12 02:40, 2F
請問 遞回應該怎麼做呢...
然後。。。呃...算組合? 舉例來說 設四個字ABCD 取3個的話
他會排出ABC ABD ACD BCD 共四種,其他的就算重複(比方CBA),不需要算進去這樣...
另外,我真的很想知道為什麼加了那三行程式會跳出來...~"~
※ 編輯: zgmfx2000 來自: 140.123.223.131 (08/12 02:49)
→
08/12 03:13, , 3F
08/12 03:13, 3F
→
08/12 03:13, , 4F
08/12 03:13, 4F
→
08/12 03:23, , 5F
08/12 03:23, 5F
討論串 (同標題文章)