关于递归函数里的数组问题
想知道int cur = {True}这一句为什么到递归调用的时候就不能被初始化为True了?#include <iostream>
#define True 1
#define False 0
using namespace std;
int count = 0;
int search( int line,int n/*当前行*/)
{
int i;
int cur = {True};//当前行状态
if(n == 8)
{
count+= 1;
return 0;
}
for(i = 0;i < n;i++)//判断哪些列不可以放
{
cur] = False;
}
for(i = 0;i<n;i++)//判断是否在斜边上
{
int k;
k = n-i;//行数之差
if(line + k < 8)//右边斜线
{
cur + k] = False;
}
if(line - k >= 0)//左边斜线
{
cur - k] = False;
}
}
for(i = 0;i < 8;i++)
{
if(cur == True)
{
line = i;//记录当前皇后列的数字
search(line,n+1);
}
}
}
int main()
{
cout<<"八皇后问题:"<<endl;
int line = {0};//表示第i行里存放的皇后在第几列
search(line,0);
cout<<"八皇后问题共有:"<<count<<"种解法"<<endl;
return 0;
} 是你的初始化方式不对。
将数组统一初始化,只对0有效。
你定义一个长度为8 的数组,想直接初始化为全都是1,不能写成 int cur={1},这个写的结果是cur内容为{1,0,0,0,0,0,0,0}
所以你这一行初始化应该写全,int cur = {True,True,True,True,True,True,True,True}; 补充一下,是第11行代码(本来想标红结果代码里不能标红)
页:
[1]