比赛 板子大赛 评测结果 AAAAA
题目名称 数列问题 最终得分 100
用户昵称 喵喵喵 运行时间 0.106 s
代码语言 C++ 内存使用 3.36 MiB
提交时间 2025-01-22 10:30:02
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
int n;
int row[16],ind,tot;
bool vis[16];
bool prime(int a)
{
	for(int i = 2;i * i <= a;i++)
	{
		if(a % i == 0)
		{
			return false;
		}
	}
	return true;
}
void dfs(int x)
{
	if(x == n+1)
	{
		for(int i = 0;i < ind;i++)
		{
			cout << row[i] << " ";
		}
		cout << endl;
		tot++;
		return;
	}
	for(int i = 1;i <= n;i++)
	{
		if(ind == 0)
		{
			row[ind] = i;
			vis[i] = 1;
			ind++; 
			dfs(x+1);
			row[ind] = 0;
			ind--;
			vis[i] = 0;
		}
		else if(!vis[i] && prime(i + row[ind-1]))
		{
			row[ind] = i;
			vis[i] = 1;
			ind++;
			dfs(x+1);
			row[ind] = 0;
			ind--;
			vis[i] = 0;
		}
	}
}

int main()
{
	freopen("dfs3.in","r",stdin);
	freopen("dfs3.out","w",stdout);
	cin >> n;
	dfs(1);
	cout << tot << endl;
	return 0;
}