原题链接:C语言考试练习题_排列
解题思路:
这题比较恶心,所以才来写题解,明明直接三个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 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复