比赛 板子大赛 评测结果 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);
}