在c語言中實現全排列,對於剛接觸c語言,還沒學習演算法的人來說,比較困難了吧。估計大佬也不會看這種基礎的東西,全排列實現的辦法很多,在c++中有乙個專門的函式可以使用,但是在c中實現就有點困難了。如果你想出用乙個迴圈使乙個數字每一位都不相同,那麼你就走進了死胡同,這種辦法運算量巨大,往往到了高位就會超時。所以就要使用演算法(非遞迴型別)。
演算法採用的是交換
遞迴其實也是一種交換
#include#includeint main()
}temp=a[xiao_biao];
for(t=xiao_biao+1;t0)}}
a[y]=temp;
m=((n-1)-(xiao_biao))/2;
j=xiao_biao+1;
if((n-1)-(xiao_biao)==2)
else if((n-1)-(xiao_biao)==3)
else if((n-1)-(xiao_biao)==4||(n-1)-(xiao_biao)==5)x=2;
else if((n-1)-(xiao_biao)==6||(n-1)-(xiao_biao)==7)x=3;
else if((n-1)-(xiao_biao)==8||(n-1)-(xiao_biao)==9)x=4;
if((n-1)-(xiao_biao)==4||(n-1)-(xiao_biao)==5||(n-1)-(xiao_biao)==6||(n-1)-(xiao_biao)==7||(n-1)-(xiao_biao)==8||(n-1)-(xiao_biao)==9)
zhong=n;
}for( i=0;iprintf("\n");
all++;
}system("pause");
return 0;
}
C語言 全排列
全排列問題 description 輸出自然數1到n所有不重複的排列,即n的全排列,要求所產生的任一數字序列中不允許出現重複的數字。input 包含多組測試資料,每組測試資料報含乙個正整數n 1 n 9 output 由1 n組成的所有不重複的數字序列,每行乙個序列。sample input 3sa...
C語言 全排列
題目描述 給定乙個由不同的小寫字母組成的字串,輸出這個字串的所有全排列。我們假設對於小寫字母有 a b y z 而且給定的字串中的字母已經按照從小到大的順序排列。輸入只有一行,是乙個由不同的小寫字母組成的字串,已知字串的長度在1到6之間。輸出輸出這個字串的所有排列方式,每行乙個排列。要求字母序比較小...
全排列(c語言)
輸入乙個數字n,輸出1到n的所有排列方式。設定n 1個盒子 box 第1個盒子置於第1步,第2個盒子置於第2步.設定n張撲克牌 poker 上面分別記有數字1到n。假設求3張牌放入3個盒子的所有排列方式。初始人站在第1步,即第1個盒子面前。第1步 檢查所有牌,將1號牌發給1號盒子 走一步,到第2步。...