解题思路:
主要是用循环的嵌套输出排列,每一位遍历所有可能但不能和前面的数重复。但是这个题目还有考虑输出顺序和例子一样,所以还要考虑每轮剔除的数
注意事项:

参考代码:

不考虑顺序:

#include<stdio.h>

#include<string.h>

//三个数的排列,嵌套三个循环,每个循环都把4个数依次全试一遍,但不能重复,遇到重复就continue 

int main()

{

int in[4],i,j,k;

for(i=0;i<4;i++)

{

scanf("%d",&in[i]);

for(i=0;i<4;i++)

{

for(j=0;j<4;j++)

{

if(i==j)

continue;

for(k=0;k<4;k++)

{

if(k==j||k==i)

continue;

printf("%d %d %d\n",in[i],in[j],in[k]);

}

}

 

}

    return 0;

}

考虑顺序:

#include<stdio.h>

//由于题目要求的顺序必须是它所给出实例的顺序,第一次剔除4,输出1,2,3的全排列;第二次剔除3,输出1,2,4的全排列;第三次剔除2,输出 1,3,4的全排列;第四次剔除1,输出2,3,4的全排列

//故为了满足这个顺序,必须再加一个循环,记录每次剔除的数 

int main()

{

int in[4],i,j,k,t;

for(i=0;i<4;i++)

{

scanf("%d",&in[i]);

}

for(i=3;i>=0;i--)//用i来记录每次要剔除的数 

{

for(j=0;j<4;j++)

{

if(j==i)

continue;

for(k=0;k<4;k++)

{

if(k==i||k==j)

continue;

for(t=0;t<4;t++)

{

if(t==i||t==j||t==k)

continue;

printf("%d %d %d\n",in[j],in[k],in[t]);

}

}

}

}

return 0;

}


点赞(0)
 

0.0分

0 人评分

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

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

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

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

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

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

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

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

评论列表 共有 0 条评论

暂无评论