题目链接:http://poj.org/problem?id=1481

两次DFS,这里的思路是,没找到*,就说明,有一个骰子,因此,每搜索到一个*,深搜4个方向,并且变为'.',要是搜到'X',就是骰子的点数++,而且将他的四周的'X'变为'.'

#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<cmath>
#include<string> using namespace std; char a[+][+];
int count; int i_cmp(void const *x,void const *y)
{
return *(int*)x-*(int*)y;
} void DFS_X(int x,int y)
{
if(a[x][y]!='X')
return ;
else
a[x][y]='.';
DFS_X(x-,y); ///题目要求只需要考虑上下左右四个方向即可,而不是八个方向
DFS_X(x,y-);
DFS_X(x,y+);
DFS_X(x+,y);
} void DFS(int x,int y)
{
if(a[x][y]=='.')
return ;
if(a[x][y]=='X')
{
DFS_X(x,y);
count++;
}
a[x][y]='.';
DFS(x-,y);
DFS(x,y-);
DFS(x,y+);
DFS(x+,y);
} int main()
{
int w,h,num=,ct,dote[];
while(scanf("%d%d",&w,&h)!=EOF)
{
if(w==&&h==) break;
memset(a,'.',sizeof(a));
for(int i=; i<=h; i++)
{
getchar();
for(int j=; j<=w; j++)
scanf("%c",&a[i][j]);
}
ct=;
for(int i=; i<=h; i++)
for(int j=; j<=w; j++)
if(a[i][j]=='*')
{
count=;
DFS(i,j);
dote[ct++]=count;
}
printf("Throw %d\n",num++);
qsort(dote,ct,sizeof(dote[]),i_cmp);
for(int i=; i<ct; i++)
{
if(i)
printf(" ");
printf("%d",dote[i]);
}
printf("\n\n");
}
return ;
}

两次DFS,POJ(1481)的更多相关文章

  1. The Die Is Cast(poj 1481简单的双dfs)

    http://poj.org/problem?id=1481 The Die Is Cast Time Limit: 1000MS   Memory Limit: 10000K Total Submi ...

  2. HDU 4607 Park Visit 两次DFS求树直径

    两次DFS求树直径方法见 这里. 这里的直径是指最长链包含的节点个数,而上一题是指最长链的路径权值之和,注意区分. K <= R: ans = K − 1; K > R:   ans = ...

  3. 蒟蒻浅谈树链剖分之一——两个dfs操作

    树链剖分,顾名思义就是将树形的结构剖分成链,我们以此便于在链上操作 首先我们需要明白在树链剖分中的一些概念 重儿子:某节点所有儿子中子树最多的儿子 重链:有重儿子构成的链 dfs序:按重儿子优先遍历时 ...

  4. 蓝桥杯 大臣的旅费_树的最长度_两次DFS

    #include <iostream> #include <cstdio> #include <cstdlib> #include <algorithm> ...

  5. 【2-SAT(两次DFS版)】BZOJ1823-[JSOI2010]满汉全席

    [题目大意] 有n个材料,m个评委.每种材料可以被用来做满族菜或汉族菜,m个评委有两种可以让他满意的猜中.问是否可以满足所有评委要求? [思路] 每天只能做三道题,我已经是一个废人了……(葛优躺.jp ...

  6. 黑科技——树剖两次dfs转一次dfs!

    黑科技--树剖两次\(dfs\)转一次\(dfs\)! 重所周知,树链剖分通常是要\(dfs​\)两次的,就像这样: int Fa[N],dep[N],Sz[N],son[N]; void dfs1( ...

  7. [ tarjan + dfs ] poj 2762 Going from u to v or from v to u?

    题目链接: http://poj.org/problem?id=2762 Going from u to v or from v to u? Time Limit: 2000MS   Memory L ...

  8. DFS POJ 3087 Shuffle'm Up

    题目传送门 /* 题意:两块扑克牌按照顺序叠起来后,把下半部分给第一块,上半部给第二块,一直持续下去,直到叠成指定的样子 DFS:直接模拟搜索,用map记录该字符串是否被搜过.读懂题目是关键. */ ...

  9. 多次访问节点的DFS POJ 3411 Paid Roads

    POJ 3411 Paid Roads Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6553   Accepted: 24 ...

随机推荐

  1. pyhive -- thrift.transport.TTransport.TTransportException: TSocket read 0 bytes

    Pyhive 远程连接hive出现问题: from pyhive import hive import pandas as pd #Create Hive connection conn = hive ...

  2. 转载 Some indexes or index [sub]partitions of table VAS.TAB_PUB_CALLLOG have been marked unusable

    http://www.xifenfei.com/2011/12/some-indexes-or-index-subpartitions-of-table-vas-tab_pub_calllog-hav ...

  3. Lock接口和ReadWriteLock接口

    Lock接口 Lock接口在java.util.concurrent.locks包中,在jdk1.5之后才有. Lock接口有6个方法: void lock(); void lockInterrupt ...

  4. ckeditor(在线文本编辑器)使用教程

    ckeditor是一款由javascript编写的富文本网页编辑器,它可以填写文字.插入图片.视频.Excel等富媒体信息,也可以在源码方式下填写内容,在各个网站中应用非常广泛. 下面就来说说cked ...

  5. 树莓派安装Raspbian系统以及相关配置(通过Windows)

    1.准备 树莓派3B+(E14) 一张内存卡 (至少16G) 一个读卡器 普通电脑显示器,键盘,鼠标 2.操作系统烧制(下面的操作都是在Windows中操作,通过读开启读取内存卡) Raspbian系 ...

  6. JMeter远程分布式联机性能测试

    测试环境 apache-jmeter-2.13 Java JDK版本:1.8 1.  JMeter分布式测试简介 当一个JMeter客户端因网络限制等因素,无法模拟足够的用户对服务器施压时,需要用到J ...

  7. Kudu Tablet design

    不多说,直接上干货! http://blog.csdn.net/lookqlp/article/details/51416829

  8. 【ubuntu】出现device not managed连接不上网络

    ubuntu安装好后显示“device not managed” 1. 编辑/etc/NetworkManager/NetworkManager.conf: sudo gedit /etc/Netwo ...

  9. jquery validation yyyy-MM-dd格式日期在ie中无法验证通过

    自己开发的公众号,可以领取淘宝内部优惠券 问题 首先在ie6.7.8下面打开这个页面http://jqueryvalidation.org/date-method/,输入的日期格式为:yyyy-MM- ...

  10. MySQL如何查询当月数据

    自己写了一个比较简单效率又高的方法,分享给大家: WHERE addTime BETWEEN DATE_FORMAT(NOW(),'%Y-%m-01') AND NOW() 方法就是过滤 本月1日到当 ...