tywofxd


私信TA

用户名:tywofxd

访问量:11085

签 名:

等  级
排  名 3297
经  验 1970
参赛次数 0
文章发表 20
年  龄 0
在职情况 学生
学  校 西安电子科技大学
专  业

  自我简介:

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

参考代码:

不考虑顺序:

#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 人评分

  评论区

  • «
  • »