解题思路:
按要求输出,不解释(算了,还是解释一下吧,见注意事项)




注意事项:
题里竟然没写输出顺序是唯一的(见样例输出),简直有毒,也是醉了。




参考代码:

#include<stdio.h>
int main() {
    int i, j, k, t, a[4];
    for (i = 0; i < 4; i++) {
        scanf("%d", &a[i]);
    }
    for (t = 3; t >= 0; t--)
        for (i = 0; i < 4; i++)
            if (t != i)
                for (j = 0; j < 4; j++)
                    if (t != j && i != j)
                        for (k = 0; k < 4; k++)
                            if (t != k && i != k && j != k)
                                printf("%d %d %d\n", a[i], a[j], a[k]);
    return 0;
}


点赞(9)
 

0.0分

10 人评分

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

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

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

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

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

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

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

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

评论列表 共有 8 条评论

小菜鸡 2年前 回复TA
orz
SinzoL 2年前 回复TA
这思路真清奇,那你要不要试着把它推广到输入n个数,输出其中m个数的全排列
uq_76488365831 3年前 回复TA
太强了
牧乔 3年前 回复TA
@wudi 还好数字少一些,不然你炸了
wudi 4年前 回复TA
简单暴力,#滑稽#
#include <stdio.h>

void f(int x,int y,int z)
{
	printf("%d %d %d\n",x,y,z);
	printf("%d %d %d\n",x,z,y);
	printf("%d %d %d\n",y,x,z);
	printf("%d %d %d\n",y,z,x);
	printf("%d %d %d\n",z,x,y);
	printf("%d %d %d\n",z,y,x);
}

int main()
{
	int a,b,c,d;
	while(scanf("%d%d%d%d",&a,&b,&c,&d)!=EOF)
	{
		for(int i=4;i>=1;i--)
		{
			switch(i){
				case 1: f(b,c,d); break;
				case 2: f(a,c,d); break;
				case 3: f(a,b,d); break;
				case 4: f(a,b,c); break;
			}
		}
	}
	return 0;
}
999999 5年前 回复TA
ET 6年前 回复TA
@陈雨斌 习惯就好了。。。
陈雨斌 7年前 回复TA
2个空格,差点搞死我