HDU 1716 排列2

来源:互联网 发布:淘宝好做吗? 编辑:程序博客网 时间:2024/06/03 21:04

如有错误,欢迎大神指出!!



一道排序题目,需要用到STL 里面的特殊函数,next_permutation()即可。

ac code:

#include <iostream>#include <cstdio>#include <cstring>#include <string>#include <cstdlib>#include <cmath>#include <vector>#include <list>#include <deque>#include <queue>#include <iterator>#include <stack>#include <map>#include <set>#include <algorithm>#include <cctype>using namespace std;#define si1(a) scanf("%d",&a)#define si2(a,b) scanf("%d%d",&a,&b)#define sd1(a) scanf("%lf",&a)#define sd2(a,b) scanf("%lf%lf",&a,&b)#define ss1(s)  scanf("%s",s)#define pi1(a)    printf("%d\n",a)#define pi2(a,b)  printf("%d %d\n",a,b)#define mset(a,b)   memset(a,b,sizeof(a))#define forb(i,a,b)   for(int i=a;i<b;i++)#define ford(i,a,b)   for(int i=a;i<=b;i++)typedef long long LL;const int N=1100001;const int M=6666666;const int INF=0x3f3f3f3f;const double PI=acos(-1.0);const double eps=1e-7;int a[5];int main(){    int k=0;    while(~scanf("%d",&a[1]))    {        int sum=a[1];        for(int i=2;i<=4;i++)        {            si1(a[i]);            sum+=a[i];        }        if(!sum)            break;        if(k)            printf("\n");            int flag=1,temp;        do        {            if(a[1]==0)                continue;            if(flag)            {                printf("%d%d%d%d",a[1],a[2],a[3],a[4]);                flag=0;            }            else if(temp==a[1])                printf(" %d%d%d%d",a[1],a[2],a[3],a[4]);            else                printf("\n%d%d%d%d",a[1],a[2],a[3],a[4]);            temp=a[1];        }while(next_permutation(a+1,a+5));        printf("\n");        k++;    }    return 0;}


0 0
原创粉丝点击