比赛 |
板子大赛 |
评测结果 |
AAAAA |
题目名称 |
数列问题 |
最终得分 |
100 |
用户昵称 |
xxz |
运行时间 |
0.113 s |
代码语言 |
C++ |
内存使用 |
3.52 MiB |
提交时间 |
2025-01-22 11:09:17 |
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
int n, a[16], visited[16], num;
int s[11] = {0, 2, 3, 5, 7, 11, 13, 17, 19, 23, 29};
void dfs(int sum) {
if (sum == n + 1) {
for (int j = 1; j <= n; j++) {
printf("%d", a[j]);
cout << " ";
}
cout << endl;
num++;
return;
}
for (int j = 1; j <= 10; j++) {
int x = s[j] - a[sum - 1];
if (x <= n && x > 0 && !visited[x]) {
visited[x] = 1;
a[sum] = x;
dfs(sum + 1);
visited[x] = 0;
}
}
}
int main() {
freopen("dfs3.in", "r", stdin);
freopen("dfs3.out", "w", stdout);
scanf("%d",&n);
for (int i = 1; i <= n; i++) {
memset(visited, 0, sizeof(visited));
a[1] = i;
visited[i] = 1;
dfs(2);
}
printf("%d",num);
}