8皇后问题---好久没做这个了。练练手。
来源:互联网 发布:淘宝发货的骗局 编辑:程序博客网 时间:2024/04/29 06:04
#include <stdio.h>#define MAX_ROW 12typedef struct Tag_Stack{ int i; int j;}V_Stack;static V_Stack g_Stack[MAX_ROW];static int g_StackNum;static int g_Stack_j;static unsigned char UseFlag[MAX_ROW][MAX_ROW] = {0};static void SetUseFlag(int i, int j){ UseFlag[i][j] = 1;}static void ClearUseFlag(int i, int j){ UseFlag[i][j] = 0;}static void PushStack(int i, int j){ if(g_Stack_j >= MAX_ROW) { return; } g_Stack[g_Stack_j].i = i; g_Stack[g_Stack_j].j = j; ++g_Stack_j;}static void PopStack(){ --g_Stack_j;}static void ClearStack(){}static int IsValid(int row, int col){ int i = 0, j = 0, m = 0, n = 0; for(i=0;i<row;i++) { for(j=0;j<MAX_ROW;j++) { if(UseFlag[i][j]) { if(i == row) return 0;// 同一行无效 else if(j == col) return 0;// 同一列无效 else { m = i; n = j; while(m<MAX_ROW && n<MAX_ROW) { m+=1; n+=1; if(m==row && n==col) { return 0; } } m = i; n = j; while(m<MAX_ROW && n>=0) { m+=1; n-=1; if(m==row && n==col) { return 0; } } } } } } return 1;}void FindValid(int i){ int j = 0, ValidFlag = 0; int save = 0; if(i < MAX_ROW) { for(j=0;j<MAX_ROW;j++) { if(IsValid(i,j)) { //printf("valid:%d,%d\n",i,j); PushStack(i,j); save = g_Stack_j; SetUseFlag(i,j); FindValid(i+1); ClearUseFlag(i,j); ValidFlag = 1; if(save == g_Stack_j) { PopStack(); } } } } else {#if 0 //print result for(i=0;i<MAX_ROW;i++) { printf("%d,%d\t", g_Stack[i].i, g_Stack[i].j); } printf("\n");#endif ++g_StackNum; }}void main(){ int i = 0, j = 0; FindValid(0); printf("g_StackNum:%d\n",g_StackNum); }/*MAX_ROW:g_StackNum8:929:35210:72411:268012:14200*/
0 0
- 8皇后问题---好久没做这个了。练练手。
- 好久没写这个blog了
- 好久没弄这个博客了
- 闲来无事,写了个房态图,练练好久没有写代码了的手
- HDOJ_1004这个题做了好久
- 09-07-02 好久没来这个空间了
- 好久没做asp了,这个天都在做asp,今天做asp操作xml,找了些资料才做出来
- 好久好久没上来了
- 好久好久没来了
- 好久没做codeforces
- 好久没更新了
- 好久没来了
- 好久没来了
- 好久没来了
- 好久没更新了
- 好久没来了
- 好久没来了~
- 好久没更新了
- C语言概念
- 使用LRU算法缓存图片,android 3.0
- [MOOC 001] UMD Software Security
- c# Data Member Order
- SICP 1.20体会
- 8皇后问题---好久没做这个了。练练手。
- 使用Gson操作json数据
- 面试题15:链表中倒数第k个结点
- 解-闺怨
- hdu 4585 Shaolin 线段树
- VS2010下安装Opencv
- Win7/8 绿色软件开机启动
- C++ 硬件信息 获取硬盘序列号
- Android开发优化之——使用软引用和弱引用