帮帮我吧,第二次求问
查看原帖
帮帮我吧,第二次求问
349906
封禁用户楼主2021/6/23 21:40
#include<iostream>
#include<vector>
#include<cstring>
#define pb push_back
using namespace std;
int a;
int o;
vector< int > v;
void out()
{
    for (int i = 0; i < v.size(); i++)
    {
        cout << v[i] << " ";
    }
    cout << endl;
}
bool check(int k)
{
    int p = 0;
    bool mm[10] = { 0 };
    if (k != -1)
    {
        while (k != 0 && k != -1)
        {
            if (mm[k % 10])continue;
            mm[k % 10] = 1;
            p += (1 << (k % 10));
            k /= 10;
        }
        if ((k | o) == o) return 1;
    }
    else
    {
        for (int i = 0; i < v.size(); i++)
        {
            if (mm[v[i]])continue;
            mm[v[i]] = 1;
            p += (1 << (v[i]));
        }
        if (p == o)return 1;
    }
    return 0;
}
void make(int x, int y, int z)
{
    if (x >= 100)
    {
        v.pb(x / 100);
        v.pb(x % 100 / 10);
        v.pb(x % 10);
    }
    else if (x >= 10 && x <= 99)
    {
        v.pb(x / 10);
        v.pb(x % 10);
    }
    else
    {
        v.pb(x);
    }
    if (x >= 100)
    {
        v.pb(y / 100);
        v.pb(y % 100 / 10);
        v.pb(y % 10);
    }
    else if (x >= 10 && x <= 99)
    {
        v.pb(y / 10);
        v.pb(y % 10);
    }
    else
    {
        v.pb(y);
    }
    if (x >= 100)
    {
        v.pb(z / 100);
        v.pb(z % 100 / 10);
        v.pb(z % 10);
    }
    else if (x >= 10 && x <= 99)
    {
        v.pb(z / 10);
        v.pb(z % 10);
    }
    else
    {
        v.pb(z);
    }
    out();


}
void huiwen(int ii, int jj, int kk)
{

    int s = v.size();
    bool flag = 1;

    v.pb(v[0]);
    for (int i = 0; i < v.size(); i++)
    {
        if (v[i] != v[s - i - 1])flag = 0;
    }
    if (flag == 1)cout << ii << "." << jj << "." << kk << "." << v[0] << endl;
    v.pop_back();

    v.pb(v[1]);
    v.pb(v[0]);
    for (int i = 0; i < v.size(); i++)
    {
        if (v[i] != v[s - i - 1])flag = 0;
    }
    if (flag == 1 && check(-1))cout << ii << "." << jj << "." << kk << "." << v[1] << v[0] << endl;
    v.pop_back();
    v.pop_back();
    v.pop_back();


    flag = 1;
    v.pb(v[2]);
    v.pb(v[1]);
    v.pb(v[0]);
    for (int i = 0; i < v.size(); i++)
    {
        if (v[i] != v[s - i - 1])flag = 0;
    }
    if (flag == 1 && check(-1))cout << ii << "." << jj << "." << kk << "." << v[2] << v[1] << v[0] << endl;
    v.pop_back();
    v.pop_back();
    v.pop_back();

}
int main()
{
    cin >> a;
    for (int i = 0; i < a; i++)
    {
        int temp;
        cin >> temp;
        o += (1 << temp);
    }

    for (int i = 0; i < 256; i++)
    {
        if (!check(i))continue;
        for (int j = 0; j < 256; j++)
        {
            if (!check(j))continue;
            for (int k = 0; k < 256; k++)
            {
                if (!check(k))continue;
                v.clear();
                make(i, j, k);
                huiwen(i, j, k);

            }
        }
    }
}

额,好讲不对

2021/6/23 21:40
加载中...