hdu 1716 排列2(next_permutation函数应用)

来源:互联网 发布:知天下资源吧 ztx8.org 编辑:程序博客网 时间:2024/05/21 11:26

题目链接:点击打开链接


next_permutation要用do_while形式,不然会落下初始的排列,返回值是是否有下一个比当前数字典序高的排列

每组数据间有空行,行尾无空格要注意。


代码:

#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;int a[5];bool vis[5];int main(){    bool flag=0;    while(~scanf("%d%d%d%d",&a[1],&a[2],&a[3],&a[4])){        if(!a[1]&&!a[2]&&!a[3]&&!a[4]) break;        sort(a+1,a+5);        int t=-1;        do{ if(!a[1])continue;            if(a[1]!=t){                t=a[1];                if(!flag) flag=1;                else                  printf("\n");            }            else printf(" ");            for(int i=1;i<=4;i++){                printf("%d",a[i]);            }        }while(next_permutation(a+1,a+5));        printf("\n");    }    return 0;}


0 0
原创粉丝点击