就就这个蒟蒻,他编译过不去
查看原帖
就就这个蒟蒻,他编译过不去
349906
封禁用户楼主2021/6/20 20:59

编译过不去,这就很凄惨,自己没看出来为什么。

#include<iostream>
#include<vector>
#define pb push_back
int a;
int o;
vector< int > n;
vector< int > v;
using namespace std;
bool check(int k, int hh)
{
    int p = 0;
    bool mm[10] = { 0 };
    while (k != 0 && k != -1)
    {
        if (mm[k % 10])continue;
        mm[k % 10] = 1;
        p += (1 >> (k % 10));
    }
    if (hh != 4 && (k | o) == o) return 1;
    if (hh == 4)
    {
        p = 0;
        memset(mm, 0, sizeof(mm));
        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 != 0)
    {
        v.pb(x / 100);
        v.pb(x % 100 / 10);
        v.pb(x % 10);
    }
    else if (x / 10 != 0)
    {
        v.pb(x / 10);
        v.pb(x % 10);
    }
    else
    {
        v.pb(x);
    }
    if (y / 100 != 0)
    {
        v.pb(y / 100);
        v.pb(y % 100 / 10);
        v.pb(y % 10);
    }
    else if (y / 10 != 0)
    {
        v.pb(y / 10);
        v.pb(y % 10);
    }
    else
    {
        v.pb(y);
    }
    if (z / 100 != 0)
    {
        v.pb(z / 100);
        v.pb(z % 100 / 10);
        v.pb(z % 10);
    }
    else if (z / 10 != 0)
    {
        v.pb(z / 10);
        v.pb(z % 10);
    }
    else
    {
        v.pb(z);
    }

}
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, 4))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, 4))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;
        n.pb(a);
        o += (1 >> temp);
    }
    for (int i = 0; i < 256; i++)
    {
        if (!check(i, 1))continue;
        for (int j = 0; j < 256; j++)
        {
            if (!check(j, 2))continue;
            for (int k = 0; k < 256; k++)
            {
                if (!check(k, 3))continue;
                make(i, j, k);
                huiwen(i, j, k);



            }
        }
    }
}
2021/6/20 20:59
加载中...