Discuz! Board

 找回密码
 立即注册
查看: 313|回复: 0

深搜

[复制链接]

49

主题

70

帖子

23万

积分

论坛元老

Rank: 8Rank: 8

积分
232976

大王燕 Lv:51
发表于 2023-6-4 17:13:04 | 显示全部楼层 |阅读模式
[C++] 纯文本查看 复制代码
#include<bits/stdc++.h>
using namespace std;
int a[20],b[20];
int cnt,n,t,k;
void display(int a[],int n)
{
	for(int i=1;i<=n;i++)
	{
		cout<<a[i]<<' ';
	}
}
bool check(int x)
{
	if(x<2)
	{
		return false;
	}
	for(int i=2;i<=sqrt(x);++i)
	{
		if(x%i==0)
		{
			return false;
		}
	}
	return true;
 } 
void search(int t)
{
	for(int i=1;i<=n;i++)
	{
		if(b[i]==0&&check(i+a[t-1]))
		{
			a[t]=i;
			b[i]=1;
			if(t==n&&check(1+a[n]))
			{
				display(a,n);
				cnt++;
				cout<<endl;
				b[i]=0;
			}
			else
			{
				search(t+1);
				b[i]=0;
			}
		}
	}
}
void pl()
{
	cin>>n;
	a[1]=1;
	b[1]=1;
	search(2);
	cout<<cnt;
}
int main()
{
	pl();
	return 0;
}

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|DiscuzX

GMT+8, 2025-2-13 01:50 , Processed in 0.054901 second(s), 28 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.. 技术支持 by 巅峰设计

快速回复 返回顶部 返回列表