爱奇艺第一题,结束后写完,仅供参考
爱奇艺第一题,容量设置错误没有ac上,这是结束后写完的,仅供参考,思路:全排列里根据条件筛选
#include <iostream>
#include <vector>
using namespace std;
int sums = 0;
void permutation(vector<int>& array, int begin, int end, vector<int>& A)
{
if (begin == end)
{
bool flags = false;
for (int i = 0; i <= end; ++i)
{
// stt[m].push_back(array[j]);
// cout << array[j] << " ";
if (i < end)
{
if (A[i] == 1)
{
if (array[i] < array[i + 1])
{
flags = false;
break;
}
else
flags = true;
}
if (A[i] == 0)
{
if (array[i] > array[i + 1])
{
flags = false;
break;
}
else
flags = true;
}
}
}
if (flags)
++sums;
return;
}
else
{
for (int i = begin; i <= end; ++i)
{
swap(array[i], array[begin]);
permutation(array, begin + 1, end, A);
swap(array[i], array[begin]);
}
}
}
int main(int argc, char **argv)
{
int N;
cin >> N;
vector<int> arr;
for (int i = 1; i <= N; ++i)
arr.push_back(i);
vector<int> A;
int val;
for (int i = 1; i < N; ++i)
{
cin >> val;
A.push_back(val);
}
permutation(arr, 0, arr.size() - 1, A);
cout << "sums:" << sums << endl;
return 0;
}
凡岛公司福利 737人发布