计蒜客-连连看(dfs)

计蒜客 T1595 迷宫(一)题解 计蒜客 T1595 迷宫(一)题解 hi,大家好,我是Loony lovegood.今天突发奇想写了一篇题解 先推荐个oj //不是做广告 计蒜客 最好的oj 洛谷 好了,废话不多说了.以下是正文. 没看题的小伙伴戳这里 T1595题目 题目主要描述 两个整数 n 和 m,表示这是一个 n×m 的迷宫。 在这个n 行 m\m 列的迷宫里,其中 ‘S’ 表示蒜头君的位置,’*‘表示墙,蒜头君无法通过,’.‘表示路,蒜头君可以通过’.'移动,'T’表示迷宫的出口(蒜头君每次只能移动到四个与他相邻的位置——上, 阅读详情

连连看

连连看是一款非常有意思的游戏。

我们可以把任意两个在图的在边界上的相同的方格一起消掉,比如把两个 444 消掉以后,

每次消掉两个方格的时候,都有会获得一个分数,第 iii 次消的分数为 i×i \timesi× 方格的值。比如上面的消法,是第一次消,获得的分数为 1×4=41 \times 4 = 41×4=4。

请你帮忙最优操作情况下,获得的分数最多为多少。

dfs搜索,参数两个,一个时当前步数一个是当前价值

选取点直接二重循环一个一个遍历找点

code:

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int maxn = 25;
int n;
int mp[maxn][maxn];
int vis[maxn][maxn];
int maxscore;
int dir[4][2] = {{-1,0},{1,0},{0,-1},{0,1}};
//判断是否在地图内
int in(int x,int y){
    return (x >= 0 && x < n && y >= 0 && y < n);
}
int check(int x,int y){
    int i,tx,ty;
    //如果之前被标记过了,不行
    if(vis[x][y] == 1)return 0;
    for(i = 0; i < 4; i++){
        tx = x + dir[i][0];
        ty = y + dir[i][1];
        //如果当前点的上下左右四周在地图外或者
        //被标记过了,则说明该点是边界点
        if(!in(tx,ty) || vis[tx][ty] == 1)
           return 1;
    }
    return 0;
}
void dfs(int step,int cur){
    int i,j,k,l;
    //更新最高分
    if(cur > maxscore)
        maxscore = cur;
    //找一对不同的边界点(i,j),(k,l)
    for(i = 0; i < n; i++){
        for(j = 0; j < n; j++){
            //若点(i,j)是地图的边界点
            if(check(i,j)){
                for(k = 0; k < n; k++){
                    for(l = 0; l < n; l++){
                        //同一个点的情形应该舍弃
                        if(k == i && l == j)
                            continue;
                    //如果(k,l)也是地图边界点,且对应值相同
                        if(check(k,l) && mp[i][j] == mp[k][l]){
                            vis[i][j] = vis[k][l] = 1;
                            dfs(step+1,cur+step*mp[i][j]);
                            vis[i][j] = vis[k][l] = 0;
                        }

                    }
                }
            }
        }
    }
}
int main(){
    int i,j;
    scanf("%d",&n);
    for(i = 0; i < n; i++){
        for(j = 0; j < n; j++){
            scanf("%d",&mp[i][j]);
        }
    }
    maxscore = 0;
    dfs(1,0);
    printf("%d\n",maxscore);
    return 0;
}
/*
4
1 4 2 5
2 1 2 1
3 1 3 2
2 5 3 4
*/

【算法积累】计蒜客迷宫三问 (DFS & BFS) 计蒜客T1595 - 迷宫(一) 题目链接 一天蒜头君掉进了一个迷宫里面,蒜头君想逃出去,可怜的蒜头君连迷宫是否有能逃出去的路都不知道。 看在蒜头君这么可怜的份上,就请聪明的你告诉蒜头君是否有可以逃出去的路。 输入格式 第一行输入两个整数 nnn 和 mmm,表示这是一个 n×mn \times mn×m 的迷宫。 接下来的输入一个 nnn 行 mmm 列的迷宫。其中S表示蒜头君的位置,*表示墙,蒜头君无法通过,.表示路,蒜头君可以通过.移动,T表示迷宫的出口(蒜头君每次只能移动到四个与他相邻的位置——上, 阅读详情

相关推荐

迷宫(二)计蒜客-最短路

题目链接:https://nanti.jisuanke.com/t/T1596 题意: 求S到T的最小步数 DFS解法 // 迷宫(二)--计蒜客 #include<iostream> #include<cstdio> #include<cmath> #include<queue> #include<vector> #include&lt...

nine 965

【DFS】连连看

连连看 “连连看”相信很多人都玩过。没玩过也没关系,下面我给大家介绍一下游戏规则:在一个棋盘中,放了很多的棋子。如果某两个相同的棋子,可以通过一条线连起来(这条线不能经过其它棋子),而且线的转折次数不超过两次,那么这两个棋子就可以在棋盘上消去。不好意思,由于我以前没有玩过连连看,咨询了同学的意见,连线不能从外面绕过去的,但事实上这是错的。现在已经酿成大祸,就只能将错就错了,连线不能从外围绕过。 玩家鼠标先后点击两块棋子,试图将他们消去,然后游戏的后台判断这两个方格能不能消去。现在你的任务就是写这个后台程序。

木又可可的博客 359

迷宫(一)计蒜客

题目链接:https://nanti.jisuanke.com/t/T1595 给出起点求能否达到终点 // 迷宫(一)--计蒜客 #include<iostream> #include<cstdio> #include<cmath> #include<queue> #include<vector> #include<string&...

nine 634

连连看(DFS)

C++使用DFS构建连连看游戏

CXR_XC的博客 894

基于深度优先搜索的连连看游戏路径查找算法

针对目前连连看游戏路径查找算法不够精练的问题,基于深度优先搜索和栈的思想,设计了一个全新的路径查找算法。有别于其它查找路径与记录路径轨迹需要分两步进行的算法,本算法判断两个点之间如果存在路径,则同时会记录有效路径的轨迹。

mac搭建ios自动化环境之WebDriverAgent配置

一、WebDriverAgent 1、简单介绍: WebDriverAgent是facebook为苹果公司开发的一款自动化测试工具,github上有下载资源;另外appium安装后也会自动安装自带的WebDriverAgent;可以用自带的,也可以从github下载并替换自带的; 2、不同appium版本自带WebDriverAgent默认路径不同 1)appium 1.10.1之前版本: npm方式安装: /usr/local/lib/node_modules/appium/node_modules/a

qq_30237715的博客 2761

HDU 1175(搜索题,BFS)

连连看<br />Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)<br />Total Submission(s): 2678    Accepted Submission(s): 608<br /><br />Problem Description“连连看”相信很多人都玩过。没玩过也没关系,下面我给大家介绍一下游戏规则:在一个棋盘中,放了很多的棋子。如果某两个相同的棋子,可以通过一条

-- bird -- 1158

Oracle Primavera P6实战手册:从入门到精通的企业项目管理秘籍

本文详细介绍了Oracle Primavera P6在企业项目管理中的实战应用,从环境配置到高级进度控制技巧,帮助用户从入门到精通。通过WBS设计、资源优化和情景模拟等核心功能,提升项目管理效率。特别适合需要处理复杂项目和多团队协作的企业用户。

weixin_29235923的博客 252

hdu1175 连连看 --DFS/BFS

原题链接: http://acm.hdu.edu.cn/showproblem.php?pid=1175 直接上代码,不是很难。 #define _CRT_SECURE_NO_DEPRECATE #define _CRT_SECURE_Cy1_OVERLOAD_STANDARD_NAMES 1 #include #include #include using namesp

半壶老酒 648

RseQC实战指南:从安装到RNA-Seq数据质控全流程解析

本文提供了一份详尽的RseQC实战指南,涵盖从安装配置到RNA-Seq数据质控的全流程。文章重点解析了RseQC作为专业质控工具的核心价值,手把手指导如何通过Conda或pip完成安装,并深入讲解了bam_stat.py、geneBody_coverage.py等关键模块的使用方法与结果解读技巧,帮助用户有效评估RNA完整性、文库构建质量及链特异性,确保下游分析的可靠性。

weixin_29200741的博客 198

【VisionMaster】图像源模块之本地图像

图像采集之图像源

zhy29563 6956

计蒜客 2018 蓝桥杯省赛 B 组模拟赛(五) C. 结果填空:连连看

【题目链接】:https://nanti.jisuanke.com/t/25086【题目描述】:连连看是一款非常有意思的游戏。我们可以把任意两个在图的在边界上的相同的方格一起消掉,比如把两个 4 消掉以后,每次消掉两个方格的时候,都有会获得一个分数,第 i 次消的分数为 i× 方格的值。比如上面的消法,是第一次消,获得的分数为 1×4=4。请你帮忙最优操作情况下,获得的分数最多为多少。【答案】:8...

mcp3128 1071

HTML音乐爱心3D旋转相册完整源码

HTML音乐爱心3D旋转相册完整源码

LilyCoder的博客 1379

计蒜客 蓝桥模拟赛 连连看 (dfs)

传送门答案:89思路:    这个直接暴搜就好了,图这么小》#include &lt;bits/stdc++.h&gt; using namespace std; int a[6][6] = { {0,0,0,0,0,0}, {0,1,4,2,5,0}, {0,2,1,2,1,0}, {0,3,1,3,2,0}, {0,2,5,3,4,0}, {0,0,0,0,0,0} }; int...

Marcus-Bao的个人主页 597

辉芒微教程第七篇《PWM与PWM3调节LED灯的亮度》

这个其实就是PR3L = 128设置的,由于我们刚刚寄存器设置了8位模式,其设置的范围就是0-255,而128/255≈50%左右,因此PR3L就是我们的占空比调节的寄存器,我们可以通过它来调节占空比,大家可以试试它占空比设置10%,30%,60%来看看它的不同效果,灯的亮度是肯定不一样的,如果有条件的朋友,可以购买一款逻辑分析仪去看他的占空比。平平无期的这个东西有什么东东用,貌似是没什么用,只是一个概念而已,是不是不同设备可以设置1秒,3秒,10秒的周期就行?但是它占空比为什么是50%,怎么得来的?

qq_41809823的博客 825

Labview如何0基础自学快速入门?(纯干货帖)

讲解了如何学习Labview,Labview如何0基础入门,自学Labview的方法。什么都不会如何学好Labview的分享,欢迎关注文章~文章提供《Labview宝典》pdf下载,和《Labview虚拟仪器数据采集与通信控制》pdf下载

关注我,更多技术问题欢迎私聊~ 2万+

深度优先算法(DFS)

根据访问节点的顺序与方式,可以分为广度优先算法(BFS)和深度优先算法(DFS),本文介绍深度优先算法: 深度优先算法 1、算法概述 深度优先搜索属于图算法的一种,英文缩写为DFS。其过程简要来说是对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次。 深度优先搜索是一种在开发爬虫早期使用较多的方法,它的目的是要达到被搜索结构的叶结点(即那些不包含任何超链的HTML文件) 。 它的...

qq_41896683的博客 3万+

MT4/MT5 第三代移动平均线(MetaTrader 指标)

第三代移动平均线(3G-MA)是传统MA指标的升级版本,通过"时滞压缩"算法将信号滞后降至理论极限(λ=2)。该指标在保留平滑性的同时,信号速度比EMA快1.5-2.3倍,适用于MT4/MT5平台。核心参数包括计算周期(默认34)、滞后压缩系数(2-10)和应用价位选择,支持斜率变色功能。安装简单,无需外部依赖,通过多周期共振可提升12-18%胜率。指标代码包含完整的MT4/MT5实现方案,采用双缓冲计算结构,通过相位前移算法抵消群延迟。风险提示:需配合其他技术指标和严格风控(≤2%账户

JanLEE 578

【算法笔记】深度优先算法DFS(保姆级教学,一篇让你搞懂DFS的精髓)

本文章介绍了搜索算法中常用的DFS深度优先算法,它的核心思想是从一个起点开始,沿着一个方向尽可能深地搜索,直到无法继续为止,然后回溯到上一个节点,继续沿着其他方向搜索。DFS可以使用递归或栈(非递归)来实现。

weixin_74297512的博客 6516

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

[计蒜客][dfs]踏青

题目来源 计蒜客程序设计竞赛基础课(蓝桥杯省赛) 算法标签 深度优先搜索 题目描述 思路 摆明了计算连通块 我们只需要遇到合适得草地,把联通的草地全部标记走过即可 然后ans++,倒下一块草地再来一遍 AC代码 #include<iostream> using namespace std; const int N=110; char g[N][N]; bool st[N][N];...

代码中枢:软件工程理论与实践的桥梁 563

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

[计蒜客][dfs]引爆炸弹

题目来源 计蒜客程序设计竞赛基础课(蓝桥杯省赛) 算法标签 深度优先搜索 题目描述 提示 思路 如果一个炸弹可以被手动引爆,检查他横竖位置有没有炸弹,一起递归引爆 这样相当于适当范围被填充完,开始找下一个未使用炸弹继续使用,直到没有炸弹没被引爆 AC代码 #include<iostream> using namespace std; const int N=510; char ...

代码中枢:软件工程理论与实践的桥梁 697

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

计蒜客A1139 引爆炸弹【DFS】

传送门:计蒜客A1139 引爆炸弹 题目描述 测试样例 Sample Input 5 5 00010 00010 01001 10001 01000 Sample Output 2 解题思路   对有炸弹的位置的行和列进行dfs,并将爆炸过的行和列标记。 AC代码 #include<cstdio> const int MAXN=1e3+5; char g[MAXN][MAXN]; int r[MAXN],c[MAXN]; int ans=0; int n,m; void dfs(int

Lucas9的博客 442

计蒜客-迷宫(一)

题目: 计蒜客-迷宫(一) 简单dfs code #include <bits/stdc++.h> using namespace std; char s[11][11]; int n, m; bool FIND = false; bool vis[11][11]; int dx[] = {-1, 0, 1, 0}; int dy[] = {0, -1, 0, 1}; voi...

92377 505

[计蒜客][搜索枚举]文具店

题目来源 计蒜客程序设计竞赛基础课(蓝桥杯省赛) 算法标签 深度优先搜索 题目描述 思路 意思就是将字符串分割成k串,累加答案尽可能的小 dfs枚举 AC代码 #include<iostream> #include<string> using namespace std; string s; int k,sum,re,ans=0x3f3f3f;//ans设置为最大值 ...

代码中枢:软件工程理论与实践的桥梁 1011

计蒜客-dfs(深搜)-红与黑

蒜厂有一间长方形的房子,地上铺了红色、黑色两种颜色的正方形瓷砖。 你站在其中一块黑色的瓷砖上,只能向相邻的黑色瓷砖移动。 请写一个程序,计算你总共能够到达多少块黑色的瓷砖。 输入格式第一行是两个整数 W 和 H,分别表示 x 方向和 y 方向瓷砖的数量。 W和 H 都不超过 202020。在接下来的 H行中,每行包括 W 个字符。每个字符表示一块瓷砖的颜色, 规则如下: 1)’.’:黑色的瓷砖; 2)’#’:白色的瓷砖; 3)’@’:黑色的瓷砖,并且你站在这块瓷砖上。该字符在每个数据集合中唯一出现一次。 输

qq_45973802的博客 777

计蒜客 T1408 矩形嵌套

计蒜客 T1408 矩形嵌套 题目链接 有 n 个矩形,每个矩形可以用 a,b 来描述,表示长和宽。矩形 X(a,b) 可以嵌套在矩形 Y(c,d) 中当且仅当 a<c,b<d 或者 b<c,a<d(相当于旋转 9090 度)。例如(1,5)可以嵌套在(6,2)内,但不能嵌套在(3,4)中。你的任务是选出尽可能多的矩形排成一行,使得除最后一个外,每一个矩形都可以嵌套在下一个矩形内。 输入格式 第一行是一个正数 N(0<N<10),表示测试数据组数。 每组测试数据的第一行是

旺崽的博客 2781
上一篇: 合并数字
下一篇: 计蒜客-藏宝图(bfs+状压)
Guuuuuu老师儿
博客等级 码龄9年 259粉丝 718原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值