| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 808 人关注过本帖
标题:Floodfil问题l
只看楼主 加入收藏
无悔选择
Rank: 1
等 级:新手上路
威 望:1
帖 子:45
专家分:0
注 册:2005-12-25
收藏
 问题点数:0 回复次数:1 
Floodfil问题l
1. Floodfill
给一个20×20的迷宫和一个起点坐标,用广度优先搜索填充所有的可到达的格子。
搜索更多相关主题的帖子: Floodfil 迷宫 优先搜索 格子 坐标 
2006-04-08 15:02
无悔选择
Rank: 1
等 级:新手上路
威 望:1
帖 子:45
专家分:0
注 册:2005-12-25
收藏
得分:0 

#include<stdio.h>
#include<conio.h>
void readdata();
void init();
void search();
int emptyopen();
int takeoutofopen();
int canmoveto(int,int,int*,int*,int);
int used(int,int);
void addtoopen(int,int);
int a[12][12];
int n=12;
int open[20],head,tail,openlen=20;
int s;
void main()
{
int i,j;
readdata();
init();
search();
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%3d",a[i][j]);
printf("\n");
}
}
void search()
{
int u, row, col, r, c, i;
while(!emptyopen())
{
u=takeoutofopen();
row=u/n;
col=u%n;
for(i=0;i<4;i++)
{
if(canmoveto(row,col,&r,&c,i))
{

if(!used(r,c))
{
a[r][c]=1;
addtoopen(r,c);
}
}
}
}
}
int emptyopen()
{
if(head==tail)
return(1);
else
return(0);
}
int takeoutofopen()
{
int u;
if(head==tail)
{
printf("errer: stack is empty");
return(-1);
}
u=open[head++];
head=head%openlen;
return(u);
}
int canmoveto(int row, int col, int *p, int *q, int direction)
{
int r,c;
r=row;
c=col;
switch(direction)
{
case 0: c--;
break;
case 1: r++;
break;
case 2: c++;
break;
case 3: r--;
}
*p=r;
*q=c;
if(r<0||r>=n||c<0||c>=n)
return(0);
if(a[r][c]==0)
return(1);
return(0);
}
int used(int row, int col)
{
if(a[row][col]==0)
return(0);
else
return(1);
}
void addtoopen(int row, int col)
{
int u;
u=row*n+col;
open[tail++]= u;
tail=tail%openlen;
if((head-tail)%openlen==1)
printf("open table overflow");
}
void readdata()
{
int i,j,row,col;
char str[20];

scanf("%d%d",&row,&col);
s=row*n+col;

gets(str);
for(i=0;i<n;i++)
{
gets(str);
for(j=0;j<n;j++)
if(str[j]=='.')
a[i][j]=0;
else
a[i][j]=-2;
}
}
void init()
{
head=0;
tail=1;
open[0]=s;
}


2006-04-08 15:02
快速回复:Floodfil问题l
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016766 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved