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

题目链接:点击打开链接


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

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


代码:

#include 
#include 
#include 
#include 
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;
}


你可能感兴趣的:(水题)