怎麼用程式把所有排列可能列出 - 拼圖

By Victoria
at 2003-11-08T18:07
at 2003-11-08T18:07
Table of Contents
#include <stdio.h>
int num[20]; // 要印出的組合
int used[20]; // 某個數字是否使用過
int n; // 要印多少個數字
void lalala(int a){
int i;
if (a == n){
/* 這邊印出 num[] 這個陣列的結果 */
}
else {
for (i = 0 ; i < n ; i ++){
if (used[i] == 0){
num[a] = i;
used[i] = 1;
lalala(a + 1);
used[i] = 0;
}
}
}
}
int main(){
/* 這邊輸入 n ,讓n 等於你想要印 1 ~ n 的組合 */
lalala(0);
}
※ 引述《Manbot (manbot)》之銘言:
: 若有N個不同的東西
: 就會有N!不同的排列方法
: 那我們該怎麼用程式列出N!種的可能呢
: 就拿1-9九個數字當例子
: 9!種...要怎麼有效改變排列才能完成呢
: ---------------
: 想了好久都想不出來
--
人口壓力,請交給保險套解決
不要交給戰爭、墮胎或疾病
--
int num[20]; // 要印出的組合
int used[20]; // 某個數字是否使用過
int n; // 要印多少個數字
void lalala(int a){
int i;
if (a == n){
/* 這邊印出 num[] 這個陣列的結果 */
}
else {
for (i = 0 ; i < n ; i ++){
if (used[i] == 0){
num[a] = i;
used[i] = 1;
lalala(a + 1);
used[i] = 0;
}
}
}
}
int main(){
/* 這邊輸入 n ,讓n 等於你想要印 1 ~ n 的組合 */
lalala(0);
}
※ 引述《Manbot (manbot)》之銘言:
: 若有N個不同的東西
: 就會有N!不同的排列方法
: 那我們該怎麼用程式列出N!種的可能呢
: 就拿1-9九個數字當例子
: 9!種...要怎麼有效改變排列才能完成呢
: ---------------
: 想了好久都想不出來
--
人口壓力,請交給保險套解決
不要交給戰爭、墮胎或疾病
--
Tags:
拼圖
All Comments
Related Posts
三人分果汁...

By Vanessa
at 2003-08-17T02:34
at 2003-08-17T02:34
一隻鳥的遊戲....

By Edward Lewis
at 2003-08-09T21:07
at 2003-08-09T21:07
圓切線作圖題組

By Brianna
at 2003-08-09T10:07
at 2003-08-09T10:07
1/2?

By Una
at 2003-08-01T16:58
at 2003-08-01T16:58
一懸宕多年的難題 (看似簡單,其實大有文章…)

By Christine
at 2003-07-28T09:56
at 2003-07-28T09:56