2012年3月7日
摘要: 终于明白前一个八皇后为什么跑那么慢了,在递归上逻辑混乱。dfs(step)求的就是第step层,可以放置皇后的位置。而我刚刚又很贱的去for(i=1;i<=step;i++)重新求了一下第1行到第step行,已经排好的棋盘的合法性。 无语,当然是合法的了。 于是,理清思路,去掉一层循环。速度就上去了。汗,原来时间复杂度是0(n*n*n),现在是0(n*n)。唉,还是基础不牢固。AC代码:31ms#include<stdio.h>#include<string.h>int a[105][105]; //该位置没有皇后就是0, 有皇后为1 int n;int coun 阅读全文
posted @ 2012-03-07 14:14 hrbust_09zhangyabin 阅读(472) 评论(0) 推荐(0) 编辑
摘要: 今天上午用深搜算法敲了一个N皇后,什么剪枝都没有。算法很朴素,虽然运行良好。但耗时很久!贴别是当我看着它求解n=8时,整整用了3秒才递归出来。快笑死我了,用它来刷题,绝对废了~~~好吧,代码先放在这里,以后好好修改它!#include<stdio.h>#include<string.h>int a[105][105]; //该位置没有皇后就是0, 有皇后为1 int n;int count;int s[105]; //s[i]=j; i表示第i行,j表示第i行中,第j个位置有皇后void dfs(int step) //探索第step行皇后的位置 {int i,j,k; 阅读全文
posted @ 2012-03-07 12:12 hrbust_09zhangyabin 阅读(396) 评论(0) 推荐(0) 编辑