[爆卦]列出所有排列組合c語言是什麼?優點缺點精華區懶人包

為什麼這篇列出所有排列組合c語言鄉民發文收入到精華區:因為在列出所有排列組合c語言這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者darkjack101 (darkjack101)看板C_and_CPP標題Re: [問題] 排...


下面是我的程式碼
但跑出來的結果 好像不是很正確
就是我去計算可能的可能 和理論上的不相同

(p.s第五個數一定要是數字5,其他任意但不可重複)
#include<stdio.h>
#include <time.h>
double ta,tb;
double T;
int main(void)
{
ta=time(0);
int a,b,c,d,e=5,f,g,h,i,j=1,input;

for (a=1;a<=9;a++)
{
if (a==5) continue;
for (b=1;b<=9;b++)
{
if (b==a||b==5) continue;
for (c=1;c<=9;c++)
{
if (c==b||c==5||c==a) continue;
for (d=1;d<=9;d++)
{
if (d==c||d==5||d==b||d==a) continue;
for (f=1;f<9;f++)
{
if (f==d||f==5||f==a||f==b||f==c) continue;
for(g=1;g<=9;g++)
{
if (g==a||g==b||g==c||g==d||g==5||g==f) continue;
for(h=1;h<=9;h++)
{
if(h==a||h==b||h==c||h==d||h==5||h==f||h==g) continue;
for(i=1;i<=9;i++)
{
if(i==a||i==b||i==c||i==d||i==5||i==f||i==g||i==h)continue;
{printf("%d%d%d%d%d%d%d%d%d--%d\n",a,b,c,d,e,f,g,h,i,j);
j=j+1;
}

}
}
}
}
}
}
}
}
tb=time(0);
T=ta-tb;
printf("%g",T);

scanf("%d",&input);
return 0;
}


※ 引述《darkjack101 (darkjack101)》之銘言:
: 遇到的問題: (題意請描述清楚)
: 想要排列組合1~9 不可以以重複
: 希望得到的正確結果:
: 希望可以得到最快的方式
: 程式跑出來的錯誤結果:
: 我是利用for loop 分九次
: 類似填空格 填九個空格
: ex 第一次跑1~9,然後第二次一樣跑1~9並將和第一次重複的去除
: 第三次一樣跑1~9,同理把一二次重複的去除....
: 但這樣須要跑很久
: 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux)
: C



--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.114.93.52
tkcn:怎麼又是世界奇觀寫法 XDDD 04/12 12:36
tkcn:請參考DJWS的Backtracking教學 http://tinyurl.com/y8d9jr2 04/12 12:39
rephansu:雖然說迴圈解會比遞迴快,但這運算時間遠不如列印的時間 04/12 13:27
htymrednuht:你的程式碼f<9而不是f<=9,所以f不會有9結果才會少 04/12 13:49
htymrednuht:時間全部耗在列印上,輸出到檔案就會很快 04/12 13:50
htymrednuht:另外ta-tb是錯的,後面tb減前面ta才對 04/12 13:51
ledia:就算要遞迴轉迴圈 也不是這樣寫的 04/12 14:53
clanguage:蠻漂亮的說真的.. 04/12 20:58
james732:推世界奇觀寫法...XD 04/12 22:41
AGanPTT:又是個世界奇觀XDDD 去看看backtrack吧.. 04/13 00:40

你可能也想看看

搜尋相關網站