zoukankan      html  css  js  c++  java
  • 杭电的题,输出格式卡的很严。HDU 1716 排列2

    在这里插入图片描述
    题很简单,一开始写代码,是用整数的格式写的,怎么跑都不对,就以为算法错了,去看大佬们的算法STL全排列:next_permutation(); 又双叒叕写了好几遍,PE了将近次,直到跑了大佬代码发现,原来格式是这样的。
    在这里插入图片描述
    下面是实现全排列的两段代码,睡觉睡觉。
    STL电动

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<map>
    #include<set>
    #include<algorithm>
    using namespace std;
    int main()
    {
        char a[4]={0};
        int x=0;
        for(;;)
        {
            for(int i=0;i<4;i++)
            {
                cin>>a[i];
            }
            sort(a,a+4);
            char w=a[0];
            if(a[0]=='0'&&a[1]=='0'&&a[3]=='0'&&a[2]=='0') break;
            if(x) cout<<endl;
            x++;
            int qt=0;
            int lasta0=-1;
            bool flag2=true;
           do {
                if(a[0]=='0')continue;
                if(flag2)flag2 = false;
                else if(a[0] == lasta0) cout<<' ';
                else  cout<<endl;
               cout<<a[0]<<a[1]<<a[2]<<a[3];
                lasta0 = a[0];
            } while(next_permutation(a, a +4));
            cout<<endl;
        }
        return 0;
    }
    
    

    纯手动

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<map>
    #include<set>
    #include<algorithm>
    using namespace std;
    set<int> mx;
    int main()
    {
        int a[5];
        int sb=0;
        for(;;)
        {
            mx.clear();
            int multi;
            for(int i=1;i<5;i++)
            {
                cin>>a[i];
            }
            if(a[1]==0&&a[2]==0&&a[3]==0&&a[4]==0) break;
            if(sb)cout<<endl;
            sb++;
            for(int i=1;i<5;i++)
            {
                for(int j=1;j<5;j++)
                {
                    if(i==j) continue;
                    for(int k=1;k<5;k++)
                    {
                        if(j==k||i==k) continue;
                        for(int l=1;l<5;l++)
                        {
                            if(k==l||l==j||l==i) continue;
                            multi=a[i]*1000+a[j]*100+a[k]*10+a[l];
                            if(multi>999) mx.insert(multi);
                        }
                    }
                }
            }
            set<int>::iterator poi,p2;
            p2=mx.begin();
            int xa=0;
            for(poi=mx.begin();poi!=mx.end();poi++)
            {
                p2++;
                if(xa) cout<<' ';
                xa++;
                cout<<*poi;
                if(*p2/1000!=*poi/1000)
                {
                    cout<<endl;
                    xa=0;
                }
            }
        }
        return 0;
    }
    
    
  • 相关阅读:
    hdu 5936 2016ccpc 杭州
    bzoj 1218: [HNOI2003]激光炸弹
    bzoj 1296: [SCOI2009]粉刷匠
    桃子到底有多少
    计算x的n次方
    计算x的n次方
    菲波拉契数列
    菲波拉契数列
    八皇后(N皇后)问题算法程序(回溯法)
    八皇后(N皇后)问题算法程序(回溯法)
  • 原文地址:https://www.cnblogs.com/lunatic-talent/p/12799080.html
Copyright © 2011-2022 走看看