此程序源码为回溯算法中的n后问题

源代码在线查看: queen.cpp

软件大小: 11 K
上传用户: futianxiang0419
关键词: 程序源码 回溯算法
下载地址: 免注册下载 普通下载 VIP

相关代码

				// Queen.cpp: implementation of the Queen class.
				//
				//////////////////////////////////////////////////////////////////////
				
				#include "stdafx.h"
				#include "Queen.h"
				
				//////////////////////////////////////////////////////////////////////
				// Construction/Destruction
				//////////////////////////////////////////////////////////////////////
				
				Queen::Queen()
				{
				
				}
				
				Queen::~Queen()
				{
				
				}
				
				bool Queen::Place(int k)
				{
					for (int j = 1;j						if(abs(k-j)== abs(x[j]-x[k])|| x[j]== x[k]) return false;	
					}
						return true;
				  
				}
				
				void Queen::Backtrack(int t)
				{
					if(t>n) {
					//////////////////////////////////////////////////////////////////////////
					// 输出当前解
						
				/*	for (int i=1;i						printf("%d\t",x[i]);
						if(i%10 ==0 && n>0)
						  printf("\n");
					} 
					printf("\n");
				*/		sum++;//对解的个数加1;
					}
				   else
					   for (int i =1;i						   x[t] = i;
						   if (Place(t)) {
							   Backtrack(t+1);
						   }
					   }
				}
				int nQueen(int n)
				{
					Queen X;
					X.n = n;
					X.sum = 0;
					int *p = new int[n+1];
					for (int i =0;i						p[i]=0;
					}
					X.x = p;
					X.Backtrack(1);
					delete []p;
					return X.sum;
				}
							

相关资源