搜索--06
来源:互联网 发布:室内设计学习软件 编辑:程序博客网 时间:2024/06/06 05:51
题目大概:
矩形中X代表要计算周长的图形,如果两个X是在它的八个方向上有X,则算作是连续的,是一个图形。
每组数据,前两个数是矩形的长宽,后两个是改点所在的图形。计算该图形的周长。
思路:
从题目给出的点用深度搜索,找出这个图形,然后图形中的每个点都进行一次循环,找出他的四个边是否都存在,如果是X则表示不存在。
感想:
先循环找边还是循环找X的先后次序刚开始不好选啊。
代码:
#include <iostream>#include <cstring>using namespace std;char map[25][25];int biao[25][25];int dx[8]={1,-1,0,0,-1,-1,1,1},dy[8]={0,0,-1,1,1,-1,1,-1},q,w;int n,m,l1,l2,sum;int s(int f,int g){int k=4; for(int i=0;i<4;i++){ q=f+dx[i]; w=g+dy[i]; if(map[q][w]=='X')k--;}sum+=k; for(int i=0;i<8;i++) { q=f+dx[i]; w=g+dy[i]; if(map[q][w]=='X'&&biao[q][w]==0&&q>=1&&q<=n&&w>=1&&w<=m){biao[q][w]=1;s(q,w);} }return sum;}int main(){while(cin>>n>>m>>l1>>l2){if(m==0&&n==0&&l1==0&&l2==0)break; sum=0; for(int i=1;i<=n;i++) {for(int j=1;j<=m;j++) {cin>>map[i][j]; } } memset(biao,0,sizeof(biao));biao[l1][l2]=1; cout<<s(l1,l2)<<endl; memset(map,'.',sizeof(map));} return 0;}
阅读全文
0 0
- 搜索--06
- ACM-搜索-06
- 搜索练习题F-06
- 搜索
- 搜索
- 搜索
- 搜索
- 搜索
- 搜索
- 搜索
- 搜索
- 搜索
- 搜索
- 搜索
- 搜索
- 搜索
- 搜索
- 搜索
- 剑指offer 面试题44 扑克牌的顺子
- 梯度下降和牛顿法
- (项目)AR电子书系统创新实训第四周(1)
- OpenShot 发布 2.3.2 版本啦!
- 【操作系统】页面置换算法
- 搜索--06
- 一个基于特征向量的近似网页去重算法——term用SVM人工提取训练,基于term的特征向量,倒排索引查询相似文档,同时利用cos计算相似度
- PAT.1063A(set问题)
- Java导出Excel表格
- Android6.0及以上版本申请权限讲解
- Java中关键字 static 与final 易错点
- 1.串口通信
- 一个基于特征向量的近似网页去重算法
- mac安装mysql