Discuz! Board

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

23.2.11搜索

[复制链接]

15

主题

19

帖子

4118

积分

论坛元老

Rank: 8Rank: 8

积分
4118

墨海马 Lv:15
发表于 2023-2-11 16:40:51 | 显示全部楼层 |阅读模式
[C] 纯文本查看 复制代码
#include<bits/stdc++.h>
using namespace std;
int b[21];
int a[21];
int r;
int n,cnt;
bool sushu(int n)
{
	for(int i=2;i<n;i++)
	{
		if(n%i==0)
		{
			return false;
		}
	}
	return true;
}
void display(int a[],int n)
{
	for(int i=1;i<=n;i++)
	{
		cout<<a[i]<<' ';
	}
}
void search1(int n,int m)
{
	for(int i=2;i<=m;i++)
	{
		if(b[i]==0&&sushu(a[n-1]+i))
		{
			a[n]=i;
			b[i]=1;
			if(n==m&&sushu(a[n]+1))
			{
				display(a,n); 
				cout<<endl;
				b[i]=0;
			}
			else
			{
				search1(n+1,m);
				b[i]=0;
			}
		}
	}
}
void sushuhuan()//素数环 
{
	
	cin>>n;
	a[1]=1;
	b[1]=1;
	search1(2,n);
}

void search2(int k)
{
	for(int i=1;i<=n;i++)
	{
		if(b[i]==0)
		{
			a[k]=i;
			b[i]=1;
			if(k==r)
			{
				display(a,r);
				cnt++;
				cout<<endl;
				b[i]=0;
			}
			else
			{
				search2(k+1);
				b[i]=0;
			}
		}
	}
}
void pailie()//排列 
{
	cin>>n>>r;
	search2(1);
	cout<<cnt;
} 

回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|DiscuzX

GMT+8, 2025-5-31 12:34 , Processed in 0.064340 second(s), 27 queries .

Powered by Discuz! X3.4

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

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