试题系列一(求4,5,6,7所有四位数的排列组合)
1.求4,5,6,7所有四位数的排列组合。
方法一:
1 #include<stdio.h> 2 3 int main(int argc, char** argv) 4 { 5 int i = 0; 6 int j = 0; 7 int k = 0; 8 9 for (i = 4; i <= 7; i++) 10 { 11 for (j = 4; j <= 7; j++ ) 12 { 13 if (i != j) 14 for (k = 4; k <= 7; k++) 15 { 16 if (k != i && k != j) 17 printf("%d%d%d%d\n", i, j, k, (22-i-j-k)); 18 } 19 20 } 21 } 22 23 return 0; 24 }
方法二:(优化)
1 #include<stdio.h> 2 3 int main(int argc, char** argv) 4 { 5 int i = 0; 6 int j = 0; 7 int k = 0; 8 9 for (i = 4; i <= 7; i++) 10 { 11 for (j = 4; j <= 7; j++) 12 { 13 if (i != j) 14 { 15 k = (22 - i - j) / 2; 16 if (k != i && k != j && k != (22-i-j-k)) 17 { 18 printf("%d%d%d%d\n", i, j, k, (22-i-j-k)); 19 printf("%d%d%d%d\n", i, j, (22-i-j-k), k); 20 } 21 else 22 { 23 k--; 24 printf("%d%d%d%d\n", i, j, k, (22-i-j-k)); 25 printf("%d%d%d%d\n", i, j, (22-i-j-k), k); 26 } 27 } 28 } 29 } 30 }