BasilGuo


私信TA

用户名:BasilGuo

访问量:525

签 名:

等  级
排  名 1170
经  验 3133
参赛次数 0
文章发表 2
年  龄 0
在职情况 学生
学  校 THU
专  业

  自我简介:

TA的其他文章

解题思路: 

这题比较恶心,所以才来写题解,明明直接三个for循环就可以解决的事情,非要按照他的输出顺序才给过。

注意事项:

要按照他的顺序,就是先尽量只要后面的数改变,前面的数先不要变。比如1,2,3,4,拆分成4个三个数的就是(1,2,3), (1,2,4), (1,3,4), (2,3,4)。然后对这4个进行全排列。反正就是6个,直接打印吧。不然也是参照这个顺序,先保证前面的不动,变后面的数。

参考代码:

#include<stdio.h>
void p3(int a, int b, int c) {
    printf("%d %d %d\n", a, b, c);
    printf("%d %d %d\n", a, c, b);
    printf("%d %d %d\n", b, a, c);
    printf("%d %d %d\n", b, c, a);
    printf("%d %d %d\n", c, a, b);
    printf("%d %d %d\n", c, b, a);
}

void p4(int a, int b, int c, int d) {
    p3(a, b, c);
    p3(a, b, d);
    p3(a, c, d);
    p3(b, c, d);
}
int main()
{
    int a,b,c,d;
    while(~scanf("%d%d%d%d", &a, &b, &c, &d)) {
        p4(a, b, c, d);
    }
    return 0;
}


 

0.0分

0 人评分

  评论区

  • «
  • »