排序元素
本程序递归与素环问题一样。
输出:
1 12 123 1234 124 1243 13 132 1324 134 1342 14 142 1423 143 1432 2 21 213 2134 214 2143 23 231 2314 234 2341 24 241 2413 243 2431 3 31 312 3124 314 3142 32 321 3214 324 3241 34 341 3412 342 3421 4 41 412 4123 413 4132 42 421 4213 423 4231 43 431 4312 432 4321
代码实现:
#include <stdio.h> int S_N[4]; int Indge_Num(int num , int deepth)///---判断是否重复 { int i; for(i = 0 ; i < deepth ; i++){ if(S_N[i] == num) return 0; } return 1; } void Print(int n)///-------打印 { int i; for(i = 0 ; i < n ; i++){ printf("%d",S_N[i]); } printf("\n"); } void SortNum(int deepth)///------算法 { int i; if(deepth == 1) Print(deepth); if(deepth > 4) return ; for(i = 1 ; i <= 4 ; i++){ if(Indge_Num(i , deepth)){ S_N[deepth] = i; Print(deepth+1); SortNum(deepth+1); } } } int main()///-------main() { int i; for(i = 1 ; i <= 4 ; i++){ memset(S_N , 0 , sizeof(S_N)); S_N[0] = i; SortNum(1); } return 0; }