题目描述
将编号为 1~10 的 10 本书排放在书架上,要求编号相邻的书不能放在相邻的位 置。 请计算一共有多少种不同的排列方案。
注意,需要提交的是一个整数,不要填写任何多余的内容。
这个题用c++ 做,直接调用stl里面的全排列函数即可。符合条件的加一。不符合条件的舍去。
代码如下:
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int i,count=0,a[10]={1,2,3,4,5,6,7,8,9,10};
while(next_permutation(a,a+10))
{
for(i=0;i<9;i++)
if(a[i+1]-a[i]==1 || a[i+1]-a[i]==(-1))
break;
if(i==9) // 注意循环结束后 i为9
count++;
}
cout << count << endl;
return 0;
}
答案:479306