首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

8 皇后的有关问题写了个程序 但是不知道有关问题在哪里

2012-06-01 
8 皇后的问题写了个程序但是不知道问题在哪里#include iostreamusing namespace stdint a[8]int dfs(i

8 皇后的问题写了个程序 但是不知道问题在哪里
#include <iostream>

using namespace std;

int a[8];
int dfs(int column,int row,int value);

void digui(int column);

int n=0;
int k=0;

int main()
{
// cout << "Hello World!" << endl;
  for(int i=0;i<8;i++)
  {
  int a[8]={0,0,0,0,0,0,0,0};
  a[0]=i;
  digui(1);

  }
  cout<<n<<endl;
  cout<<k<<endl;
  cout<<"ssssss"<<endl;
  return 0;
}

//判断位置是否合适
int dfs(int column, int value)
{
  for(int i=0;i<column;i++)
  {
  if(value==a[i])
  {
  return 0;
  }
  }
  for(int i=0;i<column;i++)
  {
  if(value==(column-i+a[i]))
  {
  return 0;
  }
  }
  for(int i=0;i<column;i++)
  {
  if(value==(i-column+a[i]))
  {
  return 0;
  }
  }
  return 1;
}

void digui(int column)
{
  for(int value=0;value<8;value++)
  {
  if(dfs(column,value))
  {
  a[column]=value;
  if(column==8)
  {
  for(int j=0;j<8;j++)
  {
  cout<<a[j]<<" ";
  }
  cout<<endl;
  n++;
  }
  else
  {
  digui(++column);
  }
  }
  }
}
[code=C/C++][/code]

[解决办法]
单步跟踪不方便的话,在怀疑有问题的地方加
printf输出相关变量的值
getch暂停执行按任意键继续
[解决办法]

C/C++ code
#include <iostream>using namespace std;int a[8];int dfs(int column,int value);void digui(int column);int n=0;int k=0;int main(){// cout << "Hello World!" << endl;  for(int i=0;i<8;i++)  {//      int a[8]={0,0,0,0,0,0,0,0};  //这里重定义了      a[0]=i;      digui(1);  }  cout<<n<<endl;  cout<<k<<endl;  cout<<"ssssss"<<endl;  system("pause");  return 0;}//判断位置是否合适int dfs(int column, int value){  int i;  for(i=0;i<column;i++)  {      if(value==a[i])      {         return 0;      }  }  for(i=0;i<column;i++)  {      if(value==(column-i+a[i]))      {        return 0;      }  }  for(i=0;i<column;i++)  {      if(value==(i-column+a[i]))      {        return 0;      }  }  return 1;}void digui(int column){  for(int value=0;value<8;value++)  {      if(dfs(column,value))      {          a[column]=value;          if(column==7)  //这里正确是应该是7不是8          {              for(int j=0;j<8;j++)              {                cout<<a[j]<<" ";              }              cout<<endl;              n++;              return;          }          else          {              digui(column+1);不需要该colnumn的值,所以用column+1,而不是++column          }      }  }} 

热点排行
Bad Request.