递归用不了咋办
  • 板块学术版
  • 楼主newbieLi
  • 当前回复3
  • 已保存回复3
  • 发布时间2022/9/7 21:38
  • 上次更新2023/10/27 12:19:06
查看原帖
递归用不了咋办
676009
newbieLi楼主2022/9/7 21:38

蒟蒻刚才想用深搜做八皇后那题(p1219),结果最后发现不管输入什么数字,递归好像都起不了作用,求大佬帮忙看一看是哪里敲错了。

#include <iostream>
#include <stdio.h>
#include <string>
using namespace std;
int n,xie[30],hang[15],lie[15];
int ans=0,bu=0,flag=0,ce1,ce2;
string shunxu;
void chess(int bu)//bu已经放下棋子的个数 
{
	//ce1++;
	if(bu>n*n)
	{
		ans++;
		if(flag<3)//输出前三个结果 
		{
			flag++;
			for(int i=1;i<=n;i++)
			cout<<shunxu[i-1]<<"";
			cout<<endl;
		}
		return ;
	}
	int row,col,xien;
	row=(bu-1)/n+1;
	col=(bu-1)%n+1;
	xien=col-row+n;
	if(!hang[row]&&!lie[col]&&!xie[xien])
	{
		hang[row]=1;lie[col]=1;xie[xien]=1;
		shunxu.push_back(col);
		chess(bu+1);
		shunxu.erase(shunxu.end()-1);
		hang[row]=0;lie[col]=0;xie[xien]=0;
	}
	//ce2++;
}
int main()
{
	cin>>n;
	chess(1);
	//cout<<ce1<<endl;
    //cout<<ce2<<endl;
	//cout<<bu<<endl;
	cout<<ans<<endl;
	return 0;
}
2022/9/7 21:38
加载中...