图书排列
将编号为1~10的10本书排放在书架上,要求编号相邻的书不能放在相邻的位置。
请计算一共有多少种不同的排列方案。
注意,需要提交的是一个整数,不要填写任何多余的内容。
答案:479306
#include<iostream>
#include<cmath>
#include<algorithm>
#include<vector>
using namespace std;
int sum=0;
int count=0;
vector<int> arr;
void check()
{
for(int i=0;i<=9;i++)
{
if(i>=1)
{
int a=abs(arr[i]-arr[i-1]);
if(a==1)
{
return;
}
}
if(i<=8)
{
int b= abs(arr[i]-arr[i+1]);
if(b==1)
{
return;
}
}
}
sum++;
}
int main()
{
for(int i=1;i<=10;i++)
{
arr.push_back(i);
}
check();
while(next_permutation(arr.begin(),arr.end()))
{
check();
}
cout<<sum;
}