IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> E - 宝藏男孩zks -> 正文阅读

[C++知识库]E - 宝藏男孩zks

题目:

ks会长梦见一片充满宝藏的沙滩, 它是由若干正方形的块状土地组成的一个W*H矩形区域。zks会长决定挖出这片沙滩所有的宝藏,成为传说中的宝藏男孩!!!

不幸的是,在他挖第二块地时就触发了埋藏其中的地雷,他直接被从宿舍的床上炸醒。
他恍然大悟,原来这片沙滩上的每一块地,除了宝藏,还有可能是地雷!

故事没有就这样结束,第二天,他又做了相同的梦...

编写一个程序,计算出zks会长在被炸醒前可能挖到宝藏的最大数量。

Input

输入包含多组数据. 每组数据包含两个正整数W和H.

H表示列数,W表示行数. W和H不超过20.


每块地用字符表示如下:

'.' - 宝藏
'#' - 地雷
'@' - 起点(每组数据中只有一个,下面也有宝藏!)
输入 0 0 时程序结束

Output

对于每组数据,输出一个整数,即zks会长能挖到宝藏的最大数量。

Sample Input

6 9
....#.
.....#
......
......
......
......
......
#@...#
.#..#.
11 9
.#.........
.#.#######.
.#.#.....#.
.#.#.###.#.
.#.#..@#.#.
.#.#####.#.
.#.......#.
.#########.
...........
11 6
..#..#..#..
..#..#..#..
..#..#..###
..#..#..#@.
..#..#..#..
..#..#..#..
7 7
..#.#..
..#.#..
###.###
...@...
###.###
..#.#..
..#.#..
0 0

Sample Output

45
59
6
13

题解:

直接用一个递归函数 把能挖出来的宝藏找出来?

用for去模拟前后左右?

然后满足条件的时候?

使用递归

代码:

#include<iostream>
using namespace std;
char s[25][25];
int f[4]={0,0,+1,-1},ff[4]={1,-1,0,0};
int ans,n,k,x,y;
void dfs(int x,int y)
{
?? ?for(int i=0;i<4;i++)
?? ?if(x+f[i]>=0&&x+f[i]<n&&y+ff[i]>=0&&y+ff[i]<k&&(s[x+f[i]][y+ff[i]]=='.'))
?? ?{
?? ??? ?s[x+f[i]][y+ff[i]]='#';
?? ??? ?ans++;
?? ??? ?dfs(x+f[i],y+ff[i]);
?? ?}
}
int main()
{ ??
?? ?while(~scanf("%d%d",&k,&n))
? ? { ??
? ? ? ??
? ? ?? ?if(n==0&&k==0)
? ? ?? ?break;ans=1;
? ? ?? ?for(i=0;i<n;i++)
? ? ?? ?for(j=0;j<k;j++)
? ? ?? ?{
? ? ?? ??? ?cin>>s[i][j];
? ? ?? ??? ?if(s[i][j]=='@')
? ? ?? ??? ?{x=i;y=j;
?? ??? ??? ?}
?? ??? ?}
?? ??? ?dfs(x,y);
?? ??? ?cout<<ans<<endl;
?? ?}
}

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-12-01 17:31:50  更:2021-12-01 17:34:19 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 8:50:06-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码