解题思路: 

这题比较恶心,所以才来写题解,明明直接三个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分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论