题目描述
将编号为1~10的10本书排放在书架上,要求编号相邻的书不能放在相邻的位置。
请计算一共有多少种不同的排列方案。
输出
输出一个整数表示答案
代码如下:
#include <iostream>
#include <algorithm>
using namespace std;int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int ans;int main() {do {if (abs(a[0] - a[1]) == 1)continue;if (abs(a[1] - a[2]) == 1)continue;if (abs(a[2] - a[3]) == 1)continue;if (abs(a[3] - a[4]) == 1)continue;if (abs(a[4] - a[5]) == 1)continue;if (abs(a[5] - a[6]) == 1)continue;if (abs(a[6] - a[7]) == 1)continue;if (abs(a[7] - a[8]) == 1)continue;if (abs(a[8] - a[9]) == 1)continue;ans++;} while (next_permutation(a, a + 10));cout << ans << endl;return 0;
}