Re: [問題] 排列組合1~9的所有可能
下面是我的程式碼
但跑出來的結果 好像不是很正確
就是我去計算可能的可能 和理論上的不相同
(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
推
04/12 12:36, , 1F
04/12 12:36, 1F
→
04/12 12:39, , 2F
04/12 12:39, 2F
→
04/12 13:27, , 3F
04/12 13:27, 3F
→
04/12 13:49, , 4F
04/12 13:49, 4F
→
04/12 13:50, , 5F
04/12 13:50, 5F
→
04/12 13:51, , 6F
04/12 13:51, 6F
推
04/12 14:53, , 7F
04/12 14:53, 7F
→
04/12 20:58, , 8F
04/12 20:58, 8F
→
04/12 22:41, , 9F
04/12 22:41, 9F
推
04/13 00:40, , 10F
04/13 00:40, 10F
討論串 (同標題文章)