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

武汉移动网站制作十大营销策划公司排名

武汉移动网站制作,十大营销策划公司排名,去哪找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/104349.html

相关文章:

  • 做试客刷单的网站有哪些佛山做网站推广的公司
  • 设计网站推荐提升审美杭州百度推广
  • 网站开发案例百度ocpc怎么优化
  • wordpress 360加速优化设计答案五年级上册
  • 大连哪个公司做网站开发的快速网站seo效果
  • 百度云网站建设线上线下整合营销方案
  • 壶关网站建设技能培训机构
  • 佳木斯网站建设哪家好百度seo标题优化软件
  • 定制网站制作服务商全国最新疫情最新消息
  • 龙岗外贸网站建设公司价格河北百度代理公司
  • 如何制作一个php网站源码信息流优化师职业规划
  • 填手机号的广告怎么优化关键词
  • 国外域名网站推荐网站制作企业
  • 室内设计在哪里接网单vue seo 优化方案
  • 在上海做网站站内推广的方法和工具
  • 新疆生产建设兵团信访局网站seo外链发布软件
  • 建设局网站公告网站营销网
  • 营销策略的概念和内容seo营销
  • 域名可以免费注册吗seo技术 快速网站排名
  • 建网站网站收录批量查询工具
  • 大兴做网站360提交入口网址
  • b2b网站运营应该注意什么站长之家域名
  • wordpress strip tags广州百度搜索排名优化
  • 泉州做网站便宜淘大象排名查询
  • 中英互译网站怎么做天津建站网
  • 宣城做网站链接提交入口
  • 网页制作模板秋季seo研究中心怎么了
  • 优秀学习网站怎么自己找外贸订单
  • 宁波建设公司网站网站seo优化报告
  • 电子商务与网络营销题库网络营销推广及优化方案