Discuz! Board

 找回密码
 立即注册
查看: 476|回复: 1

23.2.25搜索

[复制链接]

15

主题

19

帖子

4118

积分

论坛元老

Rank: 8Rank: 8

积分
4118

墨海马 Lv:15
发表于 2023-2-25 18:04:57 | 显示全部楼层 |阅读模式
[C] 纯文本查看 复制代码
#include<bits/stdc++.h>
using namespace std;
int a[21];
int a1[10];
int r;
int n,cnt,s;
int b[21];
int display2(int a[]);
int c[5][9];

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;
}
void search3(int k)
{
	for(int i=1;i<n;i++)
	{
		if(s+i<=n&&i>=a1[k-1])
		{
			s+=i;
			a1[k]=i;
			if(s==n)
			{
				for(int j=1;j<k;j++)
				{
					cout<<a1[j]<<"+";
				}
				cout<<a1[k]<<endl;
			}
			else
			{
				search3(k+1);
			}
			s-=i;
		}
	}
}
void chaifen()//拆分
{
	cin>>n;
	a1[0]=1;
	search3(1);
}
bool check(int i,int j)
{
	for(int k=0;k<8;k++)
	{
		if((i==k||j==b[k]||abs(i-k)==abs(j-b[k]))&&b[k]>=0)
		{
			return false;
		}
	}
	return true;
} 
void search4(int n)
{
	for(int k=0;k<8;k++)
	{
		if(check(k,n))
		{
			b[k]=n;
			if(n==7)
			{
				cnt++;
				display2(b);
			}
			else
			{
				search4(n+1);
			}
			b[k]=-1;
		}
	}
}
int display2(int a[])
{
	for(int i=0;i<8;i++)
	{
		for(int j=0;j<8;j++)
		{
			if(a[i]==j)
			{
				cout<<'@';
			}
			else
			{
				cout<<'-';
			}
		}
		cout<<endl;
	}
	cout<<endl;
}
void eightqueen()
{
	memset(b,-1,sizeof(b));
	search4(0);
	cout<<cnt;
}
void display3(int a[],int a1[],int n)
{
	for(int i=1;i<=n;i++)
	{
		cout<<a[i]<<','<<a1[i]<<"->";
	}
	cout<<endl;
}
void search5(int x,int y,int n)
{
	int x1[4]={2,1,-1,-2};
	int y1[4]={1,2,2,1};
	for(int i=0;i<4;i++)
	{
		if((x+x1[i])>=0&&(x+x1[i])<=4&&(y+y1[i])>=0&&(y+y1[i])<=8)
		{
			a[n]=x+x1[i];//行 
			a1[n]=y+y1[i];//列 
			if(a[n]==4&&a1[n]==8)
			{
				display3(a,a1,n);
			} 
			else
			{
				search5(a[n],a1[n],n+1);
			}
		}
	}
}
void madebianli()
{
	search5(0,0,1);
}
void display4(int c[][9])
{
	for(int i=0;i<5;i++)
	{
		for(int j=0;j<5;j++)
		{
			cout<<c[i][j]<<' ';
		}
		cout<<endl;
	}
}
void search6(int n,int x,int y)
{
	int x1[8]={2,1,-1,-2,-2,-1,1,2};
	int y1[8]={1,2,2,1,-1,-2,-2,-1};
	for(int i=0;i<5;i++)
	{
		if((x+x1[i])>=0&&(x+x1[i])<=4&&(y+y1[i])>=0&&(y+y1[i])<=4)
		{
			c[x+x1[i]][y+y1[i]]=n;
			if(n==25)
			{
				display4(c);
			}
			else
			{
				search6(n+1,x+x1[i],y+y1[i]);
			}
		}
		
	}
}
void tiaoma()
{
	search6(1,0,0);
}

回复

使用道具 举报

661

主题

847

帖子

243万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2435564

烈空座 Lv:100
发表于 2023-2-25 22:27:42 | 显示全部楼层
[C] 纯文本查看 复制代码
void display4(int c[][9])
{
    for(int i=0;i<5;i++)
    {
        for(int j=0;j<5;j++)
        {
            cout<<setw(2)<<c[i][j]<<' ';
        }
        cout<<endl;
    }
    cout<<endl;
}
void search6(int n,int x,int y)
{
    int x1[8]={2,1,-1,-2,-2,-1,1,2};
    int y1[8]={1,2,2,1,-1,-2,-2,-1};
    for(int i=0;i<8;i++)//5-8 
    {
        if((x+x1[i])>=0&&(x+x1[i])<=4&&(y+y1[i])>=0&&(y+y1[i])<=4&&c[x+x1[i]][y+y1[i]]==0)//走过的地方不能再走 
        {
            c[x+x1[i]][y+y1[i]]=n;
            if(n==25)
            {
                display4(c);
            }
            else
            {
                search6(n+1,x+x1[i],y+y1[i]);
            }
            c[x+x1[i]][y+y1[i]]=0;//回溯 
        }
         
    }
}
void tiaoma()//跳马  5*5 
{
	c[0][0] =1;//缺少初始化 
    search6(2,0,0);//从第二个点开始 
}
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|DiscuzX

GMT+8, 2025-5-30 12:25 , Processed in 0.066091 second(s), 33 queries .

Powered by Discuz! X3.4

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

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