tyvj-1080 链表优化搜索
2012-03-02 20:01
246 查看
链表优化搜索
/*
* tyvj-1080
* mike-w
* 2012-2-3
* ================
* use something like dlx
* it's double link list...
*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define max_size 40
int size,total;
int row[max_size],col[max_size],ld[2*max_size],rd[2*max_size];
int pre[max_size],nxt[max_size];
int init(void)
{
int i;
for(i=1;i<=size;i++)
pre[i]=i-1,nxt[i]=i+1;
pre[size+1]=size;
nxt[0]=1;
return 0;
}
int disp(void)
{
int i;
for(i=1;i<size;i++)
printf("%d ",row[i]);
printf("%d\n",row[size]);
return 0;
}
int search(int line)
{
if(line==size+1)
{
if(total<3)
disp();
total++;
return 0;
}
int i;
for(i=nxt[0];i<=size;i=nxt[i])
{
if(!ld[i+line] && !rd[i-line+max_size])
{
ld[i+line]=1;
rd[i-line+max_size]=1;
row[line]=i;
/* unload a node */
nxt[pre[i]]=nxt[i];
pre[nxt[i]]=pre[i];
search(line+1);
ld[i+line]=0;
rd[i-line+max_size]=0;
/* relaod the node */
nxt[pre[i]]=i;
pre[nxt[i]]=i;
}
}
return 0;
}
int main(void)
{
scanf("%d",&size);
init();
search(1);
printf("%d\n",total);
return 0;
}
/*
* tyvj-1080
* mike-w
* 2012-2-3
* ================
* use something like dlx
* it's double link list...
*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define max_size 40
int size,total;
int row[max_size],col[max_size],ld[2*max_size],rd[2*max_size];
int pre[max_size],nxt[max_size];
int init(void)
{
int i;
for(i=1;i<=size;i++)
pre[i]=i-1,nxt[i]=i+1;
pre[size+1]=size;
nxt[0]=1;
return 0;
}
int disp(void)
{
int i;
for(i=1;i<size;i++)
printf("%d ",row[i]);
printf("%d\n",row[size]);
return 0;
}
int search(int line)
{
if(line==size+1)
{
if(total<3)
disp();
total++;
return 0;
}
int i;
for(i=nxt[0];i<=size;i=nxt[i])
{
if(!ld[i+line] && !rd[i-line+max_size])
{
ld[i+line]=1;
rd[i-line+max_size]=1;
row[line]=i;
/* unload a node */
nxt[pre[i]]=nxt[i];
pre[nxt[i]]=pre[i];
search(line+1);
ld[i+line]=0;
rd[i-line+max_size]=0;
/* relaod the node */
nxt[pre[i]]=i;
pre[nxt[i]]=i;
}
}
return 0;
}
int main(void)
{
scanf("%d",&size);
init();
search(1);
printf("%d\n",total);
return 0;
}
相关文章推荐
- 转载丶用双链表实现搜索的优化
- 搜索链表优化(dancing links?)
- CF 653E(Bear and Forgotten Tree 2-链表优化搜索)
- 搜索 和优化剪枝
- 广度优先搜索以及队列优化的 Bellman-Ford 短路算法
- unity战棋类游戏移动范围搜索算法设计(未优化)
- 在互联网环境下谈谈MSO:媒体搜索优化
- 【搜索】一道不错的搜索题(关于优化)
- [noip模拟题]科技节 - 搜索 - 位运算优化
- 【POJ】2312-Battle City(优化的广度搜索BFS)
- spfa 链表(优化版)
- wordpress加速优化教程:关闭wordpress站内搜索功能以及对外请求
- 移动端搜索优化将成为主流
- poj 1568 (α-β剪枝优化搜索)
- 移动APP 中文输入法下的搜索优化
- 将搜索二叉树转成有序的双向链表
- 搜索中的排序优化
- 我是混进博客圈的搜索优化爱好者
- hdu 5009 Paint Pearls(DP+链表优化)
- 代码库/搜索栏自定义动画(待优化)/AnimatedVectorDrawable