解题思路:
对于一种符合题意的情况,旋转和对称之后结果也是一样,所以我们要除去旋转(/5)和对称(/2)的情况,所以结果要除以10
代码如下:
#include <iostream>
#include <algorithm>
using namespace std;int a[] = {1, 2, 3, 4, 5, 6, 8, 9, 10, 12};
int ans;bool check() {int r1 = a[0] + a[1] + a[2] + a[3];int r2 = a[0] + a[5] + a[7] + a[9];int r3 = a[6] + a[7] + a[8] + a[3];int r4 = a[4] + a[2] + a[8] + a[9];int r5 = a[6] + a[5] + a[1] + a[4];if (r1 == r2 && r1 == r3 && r1 == r4 && r1 == r5 &&r2 == r3 && r2 == r4 && r2 == r5 &&r3 == r4 && r3 == r5 && r4 == r5) {return true;}return false;
}int main() {do {if (check()) {ans++;}} while (next_permutation(a, a + 10));cout << ans / 10 << endl;return 0;
}