解题思路:
主要是用循环的嵌套输出排列,每一位遍历所有可能但不能和前面的数重复。但是这个题目还有考虑输出顺序和例子一样,所以还要考虑每轮剔除的数
注意事项:
参考代码:
不考虑顺序:
#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 人评分
C语言程序设计教程(第三版)课后习题8.4 (Java代码)浏览:788 |
C语言程序设计教程(第三版)课后习题6.3 (C语言代码)浏览:466 |
买不到的数目 (C++代码)浏览:909 |
【亲和数】 (C语言代码)浏览:908 |
打水问题 (C语言代码)浏览:1148 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:1261 |
C语言程序设计教程(第三版)课后习题8.5 (C语言代码)浏览:956 |
C语言程序设计教程(第三版)课后习题8.5 (C语言代码)浏览:600 |
完数 (C语言代码)浏览:757 |
C语言程序设计教程(第三版)课后习题10.1 (C语言代码)浏览:571 |