首页 > [NOIP2017]棋盘
头像 牛客563870449号
发表于 2023-08-02 17:08:19
我来贡献一篇dfs加剪枝优化ac的代码吧,应该是比较好理解的一种, 主要优化: 1.用d数组记录到达i,j时的最小花费,每次搜索前判断花费是否小于d,否则不搜。 2.用st布尔类型数组记录i,j是否走过,走过的不搜。 using namespace std; int dx[] = {-1,1,0,0 展开全文
头像 savage
发表于 2019-08-27 17:51:42
题目描述 有一个m × m的棋盘,棋盘上每一个格子可能是红色、黄色或没有任何颜色的。你现在要从棋盘的最左上角走到棋盘的最右下角。 任何一个时刻,你所站在的位置必须是有颜色的(不能是无色的),你只能向上、下、左、右四个方向前进。当你从一个格子走向另一个格子时,如果两个格子的颜 展开全文
头像 牛客956500257号
发表于 2022-08-02 23:36:44
题目大意: (1)从地图左上角走到右下角,不能斜着走 (2)有红、黄两种颜色的格子。相邻颜色格子,同颜色不用花钱,不同颜色要花1个金币 (3)遇到无颜色(白色)格子,可用一次魔法使其有红、黄中任意一种颜色,但不能连续使用。使用一次需花2个金币 (4)求出整个过程最小费用 思路分析: (1)有图有格 展开全文
头像 威风镰鼬
发表于 2021-08-06 16:21:28
思路 没啥思考过程,照着题目跑bfs就过了。大概就是跑的时候记格子的花费和是否用过魔法。记录颜色时+1是因为比较方便区分白色。剪枝直接把同一格子花费大的剪掉就行了。正确性的大概考虑:若经过同一格子两次,用魔法的状态肯定是一样的,并且金币只会递增。(不知所云) 代码 #include<bits/ 展开全文
头像 QAQ天战QAQ
发表于 2020-01-12 22:42:37
include include include using namespace std;int map[105][105],val[105][105];struct node{ int x,y,c,v;};queue<node>q;int main() { int m, 展开全文
头像 想玩飞盘的小龙虾面试中
发表于 2023-12-17 21:02:58
#include<stdio.h> #include<limits.h> struct grid {     int x,y;     int color,magic;     int m 展开全文
头像 姬霓太美
发表于 2020-11-01 08:38:47
链接:https://ac.nowcoder.com/acm/problem/16423#include<cstdio>#include<cstring>#include<queue>using namespace std;const int MAXN = 100 展开全文