首页 > 其他分享 >[牛客]小红走矩阵

[牛客]小红走矩阵

时间:2024-03-11 17:22:51浏览次数:22  
标签:sy sx vis int graph 矩阵 小红 t1 牛客

题目

思路

  • 直接套bfs模板

代码

#include<bits/stdc++.h>
using namespace std;
using ll = long long;
const int N = 1e3+5,INF=0x3f3f3f3f;
struct Node{
	int x,y,s;
}t,t1;
char graph[N][N];
bool vis[N][N];
queue<Node> q;
int dx[4]={0,0,1,1};
int dy[4]={-1,1,0,0};
int sx,sy,ex,ey;
int n,m;
void bfs(){
	sx=1,sy=1,ex=n,ey=m;//起始坐标点 结束坐标点
	t.x=sx,t.y=sy,t.s=0;//初始化这个点
	q.push(t);//入队 
	vis[sx][sy]=1;//标记已经走过这条路
	while(!q.empty()){
		t = q.front();
		q.pop();
		if(t.x==ex && t.y==ey){
			cout << t.s << "\n";
			return;
		}
		for(int i=0;i<4;i++){
			int u=t.x+dx[i],v=t.y+dy[i];
			if(u<1||u>n||v<1||v>m||vis[u][v]||graph[u][v]==graph[t.x][t.y]) continue;
			vis[u][v]=1;
			t1.x=u,t1.y=v,t1.s = t+1;
			q.push(t1);
		}
	}
	cout << "-1\n";
	 
}
int main(){
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	cin >> n>> m;
	for(int i=1;i<=n;i++)
	for(int j=1;j<=m;j++)
	cin >>graph[i][j];
	cin >> n;
}

标签:sy,sx,vis,int,graph,矩阵,小红,t1,牛客
From: https://www.cnblogs.com/rzbooks/p/18066614

相关文章

  • 牛客周赛 Round 36(A~F)
    A签到直接\(/1000\)输出即可#include<bits/stdc++.h>#defineintlonglong#definerep(i,a,b)for(inti=(a);i<=(b);++i)#definefep(i,a,b)for(inti=(a);i>=(b);--i)#define_for(i,a,b)for(inti=(a);i<(b);++i)#definepiipai......
  • 牛客周赛 Round 36 (小白练习记)
    A.小红的数位删除思路:这题简单输出即可Code:#include<bits/stdc++.h>usingnamespacestd;intmain(){strings;cin>>s;for(inti=0;i<s.size()-3;i++){cout<<s[i];}return0;}B.小红的小红矩阵构造思路:......
  • 牛客小白月赛88D
    不是很裸的01背包但是被卡了半天,所以记一下思路(?)对环的计算一般是从0-n-1,这样子转完一圈%n原位置就还是0,方便计算。然后二维dp,第一维表示第几次,第二维表示多少度。 #include<iostream>usingnamespacestd;intn,m;inta[5010];intf[5010][5010];intmain(){cin>......
  • 牛客小白月赛88补题D
    D-我不是大富翁题意:做法:一开始是往贪心方面想,但是很明显,贪不了。又因为走的步先后顺序没影响,可以用dp来写。暴力也差不多。值得注意的点是动力序列可以一边读入一边处理,省了点空间。如果dp[5005][5005]这样开的话会MLE,实际上在dp的过程中,用到的只是i和i-1两行,其余都是多余的。......
  • 牛客小白月赛88 (小白来了)
    A.超级闪光牛可乐思路:n个不同名称第i种提高Wi的诱惑值,之和不小于x就可以捕捉零食不超过1000个超过输出-1不超过输出字符串即可看一眼数据你会发现根本不需要考虑因为Wi的最小值是1所有直接输出任意的即可所有你只要一个ch即可后面直接输出即可不用管其他的Code:#includ......
  • 2023牛客暑期多校训练营2 B Link with Railway Company
    ProblemDescription给你一个\(n\)个节点的树状铁路网络,维护一条边每天需要花费\(c_i\)代价。现在有\(m\)条从\(a_i\)到\(b_i\),每天的盈利为\(x_i\),维护花费为\(y_i\)的路线可以运营。你可以选择一部分路线运营,求每日的最大收益。Input第一行输入两个整数\(n,......
  • abc332D 将矩阵A变成B的最小步数
    题面:给定两个H行W列的矩阵A和B,每次操作可以交换相邻的行或列,问是否可以将A变成B?如果可以,输出最少操作步数;如果不行,输出-1。范围:2<=H,W<=5,1<=A[i][j],B[i][j]<=1e9思路:数据规模小,直接bfs搜索,如果范围再大点可以用双向bfs优化效率。需要用到哈希来快速判重。#include<bits/std......
  • C++中OpenCV、Armadillo矩阵数据格式的转换方式
      本文介绍在C++语言中,矩阵库Armadillo的mat、vec格式数据与计算机视觉库OpenCV的Mat格式数据相互转换的方法。  在C++语言的矩阵库Armadillo与计算机视觉库OpenCV中,都有矩阵格式的数据类型;而这两个库在运行能力方面各有千秋,因此实际应用过程中,难免会遇到需要将二者的矩阵格......
  • 2024牛客寒假算法基础集训营3
    A-智乃与瞩目狸猫、幸运水母、月宫龙虾#include<bits/stdc++.h>usingnamespacestd;usingi32=int32_t;usingi64=longlong;usingi128=__int128;usingldb=longdouble;#defineinti64usingvi=vector<int>;usingpii=pair<int,int>;usingv......
  • 代码随想录算法训练营第二天| 977.有序数组的平方、 209.长度最小的子数组、 59.螺旋
    977.有序数组的平方https://leetcode.cn/problems/squares-of-a-sorted-array/description/publicstaticint[]sortedSquares(int[]nums){intleft=0;intright=nums.length-1;int[]result=newint[nums.length];intwrite=......