八皇后问题
来源:互联网 发布:马甲网络收货平台 编辑:程序博客网 时间:2024/06/15 14:44
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct treeNode{
int data;
struct treeNode* child[8];
struct treeNode* father;
}TNODE;
typedef struct tree{
TNODE* root;
}TREE;
typedef struct linkNode{
TNODE* curr;
struct linkNode* next;
}LNODE;
typedef struct resultLink{
LNODE* head;
}RLINK;
void getChild(TNODE*,int ,RLINK*);
TREE* initTree();
RLINK* initLink();
void addNode(RLINK*,TNODE*);
void print(RLINK* );
int main(){
//init tree
TREE* tree;
RLINK* link;
tree=initTree();
tree->root=(TNODE*)malloc(sizeof(TNODE));
link=initLink();
getChild(tree->root,0,link);
print(link);
return 0;
}
TREE* initTree(){
TREE* root;
root=(TREE*)malloc(sizeof(TREE));
root->root=(TNODE*)malloc(sizeof(TNODE));
return root;
}
RLINK* initLink(){
RLINK* link=(RLINK*)malloc(sizeof(RLINK));
link->head=NULL;
return link;
}
void addNode(RLINK* link,TNODE* tnode){
LNODE* lnode=(LNODE*)malloc(sizeof(LNODE));
lnode->curr=tnode;
lnode->next=link->head;
link->head=lnode;
}
void getChild(TNODE* father,int level,RLINK* link){
int father_level;
int child_level;
int i,j;
int flag;
TNODE* curr;
//
if(level==8){
addNode(link,father);
return ;
}
father_level=level;
child_level=father_level+1;
for(i=0;i<8;i++){
flag=1;
curr=father;
father->child[i]=(TNODE*)malloc(sizeof(TNODE));
father->child[i]->father=father;
father->child[i]->data=i;
for(j=0;j<father_level;j++){
if(curr->data==father->child[i]->data||
(abs(curr->data-father->child[i]->data)==abs(child_level-father_level+j))){
flag=flag*0;
}
curr=curr->father;
}
if(flag==1)
{
getChild(father->child[i],child_level,link);
}
}
}
void print(RLINK* link){
LNODE* curr;
int num;
int i,j;
TNODE* curr_t;
curr=link->head;
num=0;
while(curr){
curr_t=curr->curr;
for(i=0;i<8;i++){
for(j=0;j<curr_t->data;j++){
// printf("%d\t",curr_t->data);
printf("\t");
}
printf("(%d,%d)\n",i,curr_t->data);
curr_t=curr_t->father;
}
curr=curr->next;
num++;
printf("===============================================================================\n");
}
printf("sum=%d\n",num);
}
#include<stdlib.h>
#include<string.h>
typedef struct treeNode{
int data;
struct treeNode* child[8];
struct treeNode* father;
}TNODE;
typedef struct tree{
TNODE* root;
}TREE;
typedef struct linkNode{
TNODE* curr;
struct linkNode* next;
}LNODE;
typedef struct resultLink{
LNODE* head;
}RLINK;
void getChild(TNODE*,int ,RLINK*);
TREE* initTree();
RLINK* initLink();
void addNode(RLINK*,TNODE*);
void print(RLINK* );
int main(){
//init tree
TREE* tree;
RLINK* link;
tree=initTree();
tree->root=(TNODE*)malloc(sizeof(TNODE));
link=initLink();
getChild(tree->root,0,link);
print(link);
return 0;
}
TREE* initTree(){
TREE* root;
root=(TREE*)malloc(sizeof(TREE));
root->root=(TNODE*)malloc(sizeof(TNODE));
return root;
}
RLINK* initLink(){
RLINK* link=(RLINK*)malloc(sizeof(RLINK));
link->head=NULL;
return link;
}
void addNode(RLINK* link,TNODE* tnode){
LNODE* lnode=(LNODE*)malloc(sizeof(LNODE));
lnode->curr=tnode;
lnode->next=link->head;
link->head=lnode;
}
void getChild(TNODE* father,int level,RLINK* link){
int father_level;
int child_level;
int i,j;
int flag;
TNODE* curr;
//
if(level==8){
addNode(link,father);
return ;
}
father_level=level;
child_level=father_level+1;
for(i=0;i<8;i++){
flag=1;
curr=father;
father->child[i]=(TNODE*)malloc(sizeof(TNODE));
father->child[i]->father=father;
father->child[i]->data=i;
for(j=0;j<father_level;j++){
if(curr->data==father->child[i]->data||
(abs(curr->data-father->child[i]->data)==abs(child_level-father_level+j))){
flag=flag*0;
}
curr=curr->father;
}
if(flag==1)
{
getChild(father->child[i],child_level,link);
}
}
}
void print(RLINK* link){
LNODE* curr;
int num;
int i,j;
TNODE* curr_t;
curr=link->head;
num=0;
while(curr){
curr_t=curr->curr;
for(i=0;i<8;i++){
for(j=0;j<curr_t->data;j++){
// printf("%d\t",curr_t->data);
printf("\t");
}
printf("(%d,%d)\n",i,curr_t->data);
curr_t=curr_t->father;
}
curr=curr->next;
num++;
printf("===============================================================================\n");
}
printf("sum=%d\n",num);
}
阅读全文
0 0
- 八皇后 n皇后 问题
- 八皇后N皇后问题
- 八皇后问题
- 八皇后问题
- 八皇后问题
- 八皇后问题(2)
- 八皇后问题(3)
- 八皇后问题
- 八皇后问题程序
- 浅谈八皇后问题
- 八皇后问题
- 八皇后问题
- 八皇后问题
- 八皇后问题
- 八皇后问题求解
- 八皇后问题
- 八皇后问题
- 八皇后问题
- LinkedHashMap 源码解析
- 阿里云ubuntu 14.04 搭建lamp开发环境的实践记录
- Boolan 设计模式 第一周
- Android系统各种稳定性问题所需要的log
- Android基础入门教程——8.3.1 三个绘图工具类详解
- 八皇后问题
- 基环树DP(bzoj 1040: [ZJOI2008]骑士)
- 如何学好java
- shell 变量频接时的覆盖问题
- asus pc server + geforce titan xp + centos 7
- [shell opencv] 对指定目录下所有的图片进行加黑边处理
- Docker离线安装部署文档
- Android studio butterknife 8.4.0环境配置
- MMORPG战斗系统随笔(一)