第86场周赛
时间:2022-07-28
本文章向大家介绍第86场周赛,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
840. 矩阵中的幻方
题解:根据描述,第一反应,由数据范围,满足题意的3×3的矩阵,从3×3矩阵的中间元素暴力枚举。
如何判断一个3×3矩阵是幻方的?首先这9个数均不相同,其次这9个数范围为1-9。最后每一行每一列,和对角线元素和均为15,最中间元素为5。
int numMagicSquaresInside(vector<vector<int>>& grid) {
int ret = 0;
for(int i=1;i<grid.size()-1;++i){
for(int j=1;j<grid[0].size()-1;++j){
if(judgeSquares(grid,i,j)) ret++;
}
}
return ret;
}
bool judgeSquares(vector<vector<int>>&grid,int i,int j){
set<int>s = {grid[i-1][j-1],grid[i-1][j],grid[i-1][j+1],
grid[i][j-1],grid[i][j],grid[i][j+1],
grid[i+1][j-1],grid[i+1][j],grid[i+1][j+1]};
if(s.size()!=9) return false;
for(auto i:s){
if(i<=0||i>10)return false;
}
return (grid[i][j]==5&&(grid[i-1][j-1]+grid[i-1][j]+grid[i-1][j+1]==15)
&&(grid[i][j-1]+grid[i][j]+grid[i][j+1]==15)
&&(grid[i+1][j-1]+grid[i+1][j]+grid[i+1][j+1]==15)
&&(grid[i-1][j-1]+grid[i][j]+grid[i+1][j+1]==15)
&&(grid[i-1][j+1]+grid[i][j]+grid[i+1][j-1]==15)
&&(grid[i-1][j-1]+grid[i][j-1]+grid[i+1][j-1]==15)
&&(grid[i-1][j]+grid[i][j]+grid[i+1][j]==15)
&&(grid[i-1][j+1]+grid[i][j+1]+grid[i+1][j+1]==15)
);
}
841. 钥匙和房间
题解:根据描述,第一反应,我们只需要按照他的描述,进一个房间,拿钥匙,再进另一个房间。自然转换成深度优先搜索了。
第二反应,其实就是遍历一遍,看哪些房间不可到达。可用BFS
bool canVisitAllRooms(vector<vector<int>>& rooms) {
int len = rooms.size();
vector<int>visit(len,0);
dfs(rooms,0,visit);
for(auto i:visit){
if(i==0) return false;
}
return true;
}
void dfs(vector<vector<int>>& rooms,int i,vector<int>&visit){
visit[i] = 1;
for(auto room:rooms[i]){
if(!visit[room]) dfs(rooms,room,visit);
}
}
842. 将数组拆分成斐波那契序列
843. 猜猜这个单词
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- WPF开发之以管理员身份运行
- 快速学习-Sentinel: 分布式系统的流量防卫兵
- Godot游戏开发实践之一:使用High Level Multiplayer API制作多人游戏(上)
- Godot游戏开发实践之一:使用High Level Multiplayer API制作多人游戏(下)
- ansible生产环境使用场景(二)
- Go 语言实现 RPC 调用
- django FileResponse 解决中文命名文件下载后乱码问题
- systemctl控制服务配置
- C++中的万能引用和完美转发
- 当把Markdown编辑器搬进博客
- 踩坑ThinkPHP5之模型对象返回的数据集如何转为数组
- PHP基础编程之鬼斧神工的正则表达式-正则表达式基本语法+简单实例
- PHP+mysql数据库简单分页实例-sql分页
- PHP基础编程之鬼斧神工的正则表达式-正则表达式初探+常用的正则表达式函数
- php基础编程-php连接mysql数据库-mysqli的简单使用