您的位置:首页 > 其它

深度优先搜索模板(超有用的~~)

2009-03-11 13:17 204 查看
int t; //t用来标识要搜索的元素
int count; //count用来标识搜索元素的个数
int data[m]
; //data用来存储数据的数组

//注意,数组默认是按照1……n存储,即没有第0行

//下面是4个方向的搜索,
void search(int x, int y)
{
data[x][y] = *; //搜索过进行标记
if(x-1 >= 1 && data[x-1][y] == t)
{
count++;
search(x-1,y);
}
if(x+1 <= n && data[x+1][y] == t)
{
count++;
search(x+1,y);
}
if(y-1 >= 1 && data[x][y-1] == t)
{
count++;
search(x,y-1);
}
if(y+1 <= n && data[x][y+1] == t)
{
count++;
search(x,y+1);
}
}

//下面是8个方向的搜索
void search(int x, int y)
{
data[x][y] = *; //搜索过进行标记
if(x-1 >= 1)
{
if(data[x-1][y] == t)
{
count++;
search(x-1,y);
}
if(y-1 >= 1 && data[x-1][y-1] == t)
{
count++;
search(x-1,y-1);
}
if(y+1 <= n && data[x-1][y+1] == t)
{
count++;
search(x-1,y+1);
}
}
if(x+1 <= n)
{
if(data[x+1][y] == t)
{
count++;
search(x+1,y);
}
if(y-1 >= 1 && data[x+1][y-1] == t)
{
count++;
search(x+1,y-1);
}
if(y+1 <= n && data[x+1][y+1] == t)
{
count++;
search(x+1,y+1);
}
}
if(y-1 >= 1 && data[x][y-1] == t)
{
count++;
search(x,y-1);
}
if(y+1 <= n && data[x][y+1] == t)
{
count++;
search(x,y+1);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: