博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 2386/栈:计算水堆数
阅读量:4508 次
发布时间:2019-06-08

本文共 1097 字,大约阅读时间需要 3 分钟。

Sample Input10 12W........WW..WWW.....WWW....WW...WW..........WW..........W....W......W...W.W.....WW.W.W.W.....W..W.W......W...W.......W.Sample Output3

每个点与其周围的8个可以看作同一堆

算法:

1.遍历每个点,如果它没有被访问过,并且有水,则它入栈,并且标记为已访问

2.只要栈不空,依次访问栈顶元素的邻居,如果邻居有水并且没有被访问过,则邻居入栈,如果邻居都没有水,则出栈;如果栈空了,则水堆数加1

#include 
using namespace std;typedef struct { int x,y;}Point1;int main(){ int w,h; //int x,y; char c; int s[101][101]; stack
sta; scanf("%d%d",&h,&w); getchar(); int i,j; for(i=0;i
=0&&s[p.x-1][p.y]==1) { Point1 t; t.x=p.x-1; t.y=p.y; sta.push(t); count++; p=t; s[t.x][t.y]=2; }else if(p.x>=0&&p.x
=0&&p.y
=0&&p.y>=0&&p.y
=0&&p.y>=0&&p.y+1
=0&&p.y-1>=0&&s[p.x-1][p.y-1]==1) { Point1 t; t.x=p.x-1; t.y=p.y-1; sta.push(t); count++; p=t; s[t.x][t.y]=2; } else if(p.x+1
=0&&s[p.x+1][p.y-1]==1) { Point1 t; t.x=p.x+1; t.y=p.y-1; sta.push(t); count++; p=t; s[t.x][t.y]=2; }else if(p.x-1>=0&&p.y+1

转载于:https://www.cnblogs.com/yangyh/archive/2011/06/05/2073288.html

你可能感兴趣的文章
如何在Bitmap中画图?(MFC)
查看>>
Windows 用来定位 DLL 的搜索路径
查看>>
常见的游戏设计技术
查看>>
Backbone 学习笔记五
查看>>
R语言:各种零碎
查看>>
Mysql5.7修改root密码
查看>>
WC2019退役失败记
查看>>
Centos6.6下安装nginx1.6.3
查看>>
iOS开发之多线程
查看>>
[算法竞赛]第七章_暴力求解法
查看>>
关于全局替换空格,制表符,换行符
查看>>
MorkDown 常用语法总结
查看>>
sqlserver生成随机数 2011-12-21 15:47 QQ空间
查看>>
jQuery禁止鼠标右键
查看>>
查询linux计算机的出口ip
查看>>
解决Android的ListView控件滚动时背景变黑
查看>>
laravel 多检索条件列表查询
查看>>
Java_基础—finally关键字的特点及作用
查看>>
SQLServer 日期函数大全
查看>>
激活webstorm11
查看>>