当前位置: 首页 > wzjs >正文

js代码 嵌入网站软件工程专业导论结课论文

js代码 嵌入网站,软件工程专业导论结课论文,wordpress首页自定义缩略图大小,怎么注册网络平台题目描述 小杨同学用不同种类的俄罗斯方块填满了一个大小为 n m n \times m nm 的网格图。 网格图由 n m n \times m nm 个带颜色方块构成。小杨同学现在将这个网格图交给了你,请你计算出网格图中俄罗斯方块的种类数。 如果两个同色方块是四连通(即…

题目描述

小杨同学用不同种类的俄罗斯方块填满了一个大小为 n × m n \times m n×m 的网格图。

网格图由 n × m n \times m n×m 个带颜色方块构成。小杨同学现在将这个网格图交给了你,请你计算出网格图中俄罗斯方块的种类数。
如果两个同色方块是四连通(即上下左右四个相邻的位置)的,则称两个同色方块直接连通;若两个同色方块同时与另一个同色方块直接或间接连通,则称两个同色方块间接连通。一个俄罗斯方块由一个方块和所有与其直接或间接连接的同色方块组成。定义两个俄罗斯方块的种类相同当且仅当通过平移其中一个俄罗斯方块可以和另一个俄罗斯方块重合;如果两个俄罗斯方块颜色不同,仍然视为同一种俄罗斯方块。

例如,在如下情况中,方块 1 1 1 和方块 2 2 2 是同一种俄罗斯方块,而方块 1 1 1 和方块 3 3 3 不是同一种俄罗斯方块。

输入格式

第一行包含两个正整数 n n n m m m,表示网格图的大小。
对于之后的 n n n 行,第 i i i 行包含 m m m 个正整数 a i 1 , a i 2 , … a i m a_{i1}, a_{i2}, \dots a_{im} ai1,ai2,aim,表示该行 m m m 个方块的颜色。

输出格式

输出一行一个整数表示答案。

输入输出样例 #1

输入 #1

5 6
1 2 3 4 4 5
1 2 3 3 4 5
1 2 2 3 4 5
1 6 6 7 7 8
6 6 7 7 8 8

输出 #1

7

说明/提示

子任务分数 n , m ≤ n,m \leq n,m特殊约定
1 1 1 30 30 30 20 20 20所有俄罗斯方块大小不超过 5 × 5 5 \times 5 5×5
2 2 2 30 30 30 500 500 500所有俄罗斯方块大小均为 1 × x 1 \times x 1×x x × 1 x \times 1 x×1 类型,其中 x x x 是任意正整数
3 3 3 40 40 40 500 500 500

对全部的测试数据,保证 1 ≤ n , m ≤ 500 1 \leq n, m \leq 500 1n,m500 1 ≤ a i , j ≤ n × m 1 \leq a_{i,j} \leq n \times m 1ai,jn×m

solution

这道题本质是每一个小整体的中各小方块的相对位置是否相同,如果用固定的搜索顺序的话,每一个方块的搜索方向决定了相对位置。所以可以用搜索方向的方向序列表示唯一表示一种俄罗斯方块。但是需要注意的是,深度优先搜索过程中,某一个位置搜索完成后会回到上一层继续搜索,此时就会出现有可能的不唯一表示,比方说
序列1: 在 A 点处,向下搜索
序列2: 在 A 点处,递归结束,回到 B 点, B 点向下搜索。
可以在每一个点递归结束后添加一个标记即可。

代码

#include <iostream>
#include "bit"
#include "vector"
#include "unordered_set"
#include "set"
#include "queue"
#include "stack"
#include "algorithm"
#include "bitset"
#include "cstring"using namespace std;int col, sx, sy, m, n, mat[501][501];
int dx[] = {1, -1, 0, 0};
int dy[] = {0, 0, 1, -1};
bool vis[501][501];
string s;void dfs(int x, int y) {vis[x][y] = true;for (int i = 0; i < 4; i++) {int xx = x + dx[i];int yy = y + dy[i];if (xx >= 0 && x < m && yy >= 0 && yy < n && !vis[xx][yy] && mat[xx][yy] == col) {s.push_back(char(i + '0'));dfs(xx, yy);}}s.push_back('x');
}int main() {cin >> m >> n;for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {cin >> mat[i][j];}}unordered_set<string> set;for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {if (!vis[i][j]) {col = mat[i][j];s.clear();dfs(i, j);set.insert(s);}}}cout << set.size();
}

结果

在这里插入图片描述

http://www.dtcms.com/wzjs/822794.html

相关文章:

  • 响应式网站的开发宁波模板建站定制网站
  • 做网站简单吗中山网站开发
  • 大朗镇网站仿做电子邮箱怎么申请
  • 广西网站建设教程网站做下要多少
  • 抚养网站建设企业网站建设合同书
  • 建设一个网站的方法安徽阜阳网站建设
  • 途牛网站建设方案wordpress登陆页面404
  • 页面上影响网站排名的因素wordpress 无法编辑主题
  • wordpress文件下载站亳州网站建设费用
  • 站群是什么意思网站建设售后服务承诺
  • 做英文企业网站多钱钱wordpress安装报错
  • 怎么做网站建设销售影视网站开发
  • 设计一个app界面多少钱谷歌seo排名优化服务
  • 网络公司网站优化网站建设30天网站建设实录视频
  • 做彩票类网站用什么服务器wordpress mysql安装
  • 网站建设话语媒介
  • 1m带宽做网站怎么样手机网站图片轮播
  • 网站开发需要团队吗网络软件下载
  • 织梦搭建本地网站北极寒流wordpress
  • 福州公司网站建设拉卡拉(300773) 股吧
  • 哈尔滨的网站建设公司wordpress怎么搬站
  • 如何建英文网站深圳画册公司
  • 网站建设初期的宣传北京到广州防疫政策
  • phpcms 怎么做视频网站首页安卓端网站开发ide
  • 做网站发违规内容 网警抓不抓湖州 网站建设公司
  • 网站功能插件wordpress wap插件
  • 建设网站和推广旅游找什么网站好
  • 信誉好的昆明网站建设wordpress增加自定义栏目
  • 微积壹佰 网站建设服装网站的建设背景
  • 美食网站怎么做dw郑州建设局