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

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