游游想知道,有多少个长度为的排列满足任意两个相邻元素之和都不是素数。你能帮帮她吗? 我们定义,长度为的排列值一个长度为的数组,其中1到每个元素恰好出现了一次。
区块链毕设网qklbishe.com为您提供问题的解答
游游想知道,有多少个长度为的排列满足任意两个相邻元素之和都不是素数。你能帮帮她吗?
我们定义,长度为的排列值一个长度为的数组,其中1到每个元素恰好出现了一次。
#include <bits/stdc++.h>
using namespace std;
unordered_set<int> suShu = {2, 3, 5, 7, 11, 13, 17, 19};
int step = 0;
int pre = 0;
vector<int>used;
int res = 0;
int n;
void print(vector<int>v) {
for (int i = 0; i < v.size(); i++)cout << v[i] << ‘ ‘;
cout << endl;
}
void backtracking() {
if (step == n) {
res++;
return;
}
// print(path);
for (int i = 1; i <= n; i++) {
if (used[i])continue;
if (step && suShu.count(i + pre))continue;
int t = pre;
pre = i;
step++;
used[i] = 1;
backtracking( );
pre = t;
step–;
used[i] = 0;
}
}
using namespace std;
unordered_set<int> suShu = {2, 3, 5, 7, 11, 13, 17, 19};
int step = 0;
int pre = 0;
vector<int>used;
int res = 0;
int n;
void print(vector<int>v) {
for (int i = 0; i < v.size(); i++)cout << v[i] << ‘ ‘;
cout << endl;
}
void backtracking() {
if (step == n) {
res++;
return;
}
// print(path);
for (int i = 1; i <= n; i++) {
if (used[i])continue;
if (step && suShu.count(i + pre))continue;
int t = pre;
pre = i;
step++;
used[i] = 1;
backtracking( );
pre = t;
step–;
used[i] = 0;
}
}
int main() {
cin >> n;
used.resize(n + 1);
backtracking();
cout << res;
}
// 64 位输出请用 printf("%lld")
25:24
以上就是关于问题游游想知道,有多少个长度为的排列满足任意两个相邻元素之和都不是素数。你能帮帮她吗? 我们定义,长度为的排列值一个长度为的数组,其中1到每个元素恰好出现了一次。的答案
欢迎关注区块链毕设网-
专业区块链毕业设计成品源码,定制。
区块链NFT链游项目方科学家脚本开发培训