原本写的是这样的:

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

思路是对的,不过提交后答案错误。

提交时的答案要与样例输出格式是一样的才能通过。

注意看样例,前6个没有第四个数,7~12没有第三个数,

13~18没有第二个数,19~24没有第一个数。

然后就改了改,把它当成三个数来输出,

copy了4个上面的嵌套循环,就改成下面这样了

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


注意事项:

提交时的答案要与样例输出格式是一样!注意顺序!!!

点赞(1)
 

0.0分

3 人评分

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

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

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

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

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

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

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

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

评论列表 共有 2 条评论

小吖白又白 5年前 回复TA
@smile浅笑 错的,它那个输出是要有顺序的e。要是学STL了可以用STL next_permutation直接排出来
smile浅笑 5年前 回复TA
第一种思路的第二个for(int i=0;i<4;i++)改成for(int i=3;i>=0;i--)就好了