求助!站外题!玄关!
  • 板块灌水区
  • 楼主Like_Amao
  • 当前回复11
  • 已保存回复11
  • 发布时间2024/5/30 20:30
  • 上次更新2024/6/9 17:10:49
查看原帖
求助!站外题!玄关!
993044
Like_Amao楼主2024/5/30 20:30

原题戳这里

#include<bits/stdc++.h>
using namespace std;
int n,m,mp[11][11],bz[101];
void dfs(int,int);
void print();
bool is_prime(int);
int main()
{
	cin>>n>>m;
	mp[1][1]=1;
	bz[1]=1;
	dfs(1,2);
	cout<<"NO!";
	return 0;
}
void dfs(int x,int y)
{
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			cout<<mp[i][j]<<" ";
		}
		cout<<endl;
	}
	cout<<endl;
	if(x>n)
	{
		print();
		exit(0);
	}
	else
	{
		for(int i=2;i<=n*m;i++)
		{
			if(!bz[i])
			{
				bz[i]=1;
				if(x==1 and is_prime(i+mp[x][y-1])==true)
				{
					if(y==m)
					{
						mp[1][y]=i;
						dfs(2,1);
					}
					else
					{
						mp[1][y]=i;
						dfs(1,y+1);
					}
				}
				if(x!=1 and is_prime(i+mp[x][y-1])==true and is_prime(i+mp[x-1][y])==true)
				{
					if(y==m)
					{
						mp[x][y]=i;
						dfs(x+1,1);
					}
					else
					{
						mp[x][y]=i;
						dfs(x,y+1);
					}
				}
				bz[i]=0;
			}
		}
	}
}
void print()
{
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			cout<<mp[i][j]<<" ";
		}
		cout<<endl;
	}
}
bool is_prime(int x)
{
	if(x<=1)
	{
		return false;
	}
	else
	{
		for(int i=2;i*i<=x;i++)
		{
			if(x%i==0)
			{
				return false;
			} 
		}
		return true;
	}
}

愿各位神犇高抬贵手,帮助本蒟蒻吧!

2024/5/30 20:30
加载中...