解题思路:
这题比较恶心,所以才来写题解,明明直接三个for循环就可以解决的事情,非要按照他的输出顺序才给过。
注意事项:
要按照他的顺序,就是先尽量只要后面的数改变,前面的数先不要变。比如1,2,3,4,拆分成4个三个数的就是(1,2,3), (1,2,4), (1,3,4), (2,3,4)。然后对这4个进行全排列。反正就是6个,直接打印吧。不然也是参照这个顺序,先保证前面的不动,变后面的数。
参考代码:
#include<stdio.h> void p3(int a, int b, int c) { printf("%d %d %d\n", a, b, c); printf("%d %d %d\n", a, c, b); printf("%d %d %d\n", b, a, c); printf("%d %d %d\n", b, c, a); printf("%d %d %d\n", c, a, b); printf("%d %d %d\n", c, b, a); } void p4(int a, int b, int c, int d) { p3(a, b, c); p3(a, b, d); p3(a, c, d); p3(b, c, d); } int main() { int a,b,c,d; while(~scanf("%d%d%d%d", &a, &b, &c, &d)) { p4(a, b, c, d); } return 0; }
0.0分
0 人评分