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