代码有极大问题!求找错
  • 板块灌水区
  • 楼主YIDINGZ
  • 当前回复19
  • 已保存回复19
  • 发布时间2022/4/29 15:34
  • 上次更新2023/10/28 02:40:19
查看原帖
代码有极大问题!求找错
592111
YIDINGZ楼主2022/4/29 15:34

素数环题目

从1到n这n个数摆成一个环,要求相邻的两个数的和是一个素数,罗列所有排列

输入格式
输入一个正整数n(n<=10)

输出格式
一行输出一种排列情况,数字间用空格隔开

输入输出样例
输入 #1复制
4
输出 #1复制
1 2 3 4 
1 4 3 2 
2 1 4 3 
2 3 4 1 
3 2 1 4 
3 4 1 2 
4 1 2 3 
4 3 2 1 

错误代码(求找错)

#include<bits/stdc++.h>
using namespace std;
int n;
int a[12];
int b[12];
bool shu[30];

bool pd(int x,int y)
{
	int i;
    for(i = x+y;i >= (x+y)/2;i++)
    {
    	if(i%2 == 0)
    	{
    		return false;
		}
	}
	return true;
}

void dfs(int step)
{
	if(step == n+1)
	{
		for(int i =1;i <= n;i++)
		{
			cout << a[i] <<" ";
		}
		cout <<endl;
		return;
	}
	
	for(int i =1;i <= n;i++)
	{

		if(shu[i] == 0&&pd(a[i],a[i+1]) == 1)
		{
			a[step] = b[i-1];
			shu[i] = 1;
			dfs(step+1);
			shu[i] = 0;
		}
	}
}

int main()
{
	cin >> n;
	for(int i =1;i <= n;i++)
	{
		a[i] = i;
		b[i] = i;
	}
	dfs(1);
	return 0;
}
2022/4/29 15:34
加载中...