/*** Return an array of arrays of size *returnSize.* The sizes of the arrays are returned as *returnColumnSizes array.* Note: Both returned array and *columnSizes array must be malloced, assume caller calls free().*//* 递归调用的方式遍历每个色块 */
void set(int **grid, int **arr, int **vist, int r, int c, int x, int y, int origin_color, int new_color){if(x<0 || x>=r || y<0 || y>=c || /* 判断边界,超出直接退出 */vist[x][y] || arr[x][y]!=origin_color){/* 已经访问的,和原始色块不同的,直接退出 */return;}/* 标志已经访问该色块 */vist[x][y] = 1;/* 将处在边界的色块进行染色 */if(x==0 || x==r-1 || y==0 || y==c-1 || /* 在区域边界上 */arr[x][y] != arr[x-1][y] || arr[x][y] != arr[x+1][y] ||/* 与其他色块相邻 */arr[x][y] != arr[x][y-1] || arr[x][y] != arr[x][y+1]){grid[x][y] = new_color;}/* 递归调用 */set(grid, arr, vist, r, c, x-1, y, origin_color, new_color);set(grid, arr, vist, r, c, x+1, y, origin_color, new_color);set(grid, arr, vist, r, c, x, y-1, origin_color, new_color);set(grid, arr, vist, r, c, x, y+1, origin_color, new_color);}int** colorBorder(int** grid, int r, int* col, int r0, int c0, int color, int* returnSize, int** returnColumnSizes){int i,j;int c = col[0];/* arr用于存储原始颜色分布 */int **arr = (int **)malloc(sizeof(int *) * r);/* vist 用于表示每个色块的访问情况 */int **vist = (int **)malloc(sizeof(int *) * r);for(i=0; i<r; i++){arr[i] = (int *)malloc(sizeof(int) * c);vist[i] = (int *)malloc(sizeof(int) * c);for(j=0; j<c; j++){arr[i][j] = grid[i][j];vist[i][j] = 0;}}set(grid, arr, vist, r, c, r0, c0, grid[r0][c0], color);*returnSize = r;*returnColumnSizes = col;/* free buffers */for(i=0; i<r; i++){free(arr[i]);free(vist[i]);}free(arr);free(vist);return grid;
}

LeetCode-5040-边框着色-C语言相关推荐

  1. LeetCode 1034. 边框着色(BFS/DFS)

    文章目录 1. 题目 2. 解题 2.1 BFS 2.2 DFS 1. 题目 给出一个二维整数网格 grid,网格中的每个值表示该位置处的网格块的颜色. 只有当两个网格块的颜色相同,而且在四个方向中任 ...

  2. OpenGL ES着色器语言之变量和数据类型

    所有变量和函数在使用前必须声明.变量和函数名是标识符. 没有默认类型,所有变量和函数声明必须包含一个声明类型以及可选的修饰符.变量在声明的时候首先要标明类型,后边可以跟多个变量,之间用逗号隔开.很多情 ...

  3. OpenGL ES着色器语言之语句和结构体(官方文档第六章)内建变量(官方文档第七、八章)...

    OpenGL ES着色器语言之语句和结构体(官方文档第六章) OpenGL ES着色器语言的程序块基本构成如下: 语句和声明 函数定义 选择(if-else) 迭代(for, while, do-wh ...

  4. OpenGL ES着色器语言之变量和数据类型(二)(官方文档第四章)

    OpenGL ES着色器语言之变量和数据类型(二)(官方文档第四章) 4.5精度和精度修饰符 4.5.1范围和精度 用于存储和展示浮点数.整数变量的范围和精度依赖于数值的源(varying,unifo ...

  5. 可编程渲染管线与着色器语言

    Programming pipeline & shading language 大家好,今天想给大家介绍一下可编程渲染管线和着色器语言的相关基础知识,使想上手SHADER编程的童鞋们可以快速揭 ...

  6. Godot着色器语言

    引言 Godot 使用的了一种非常接近GLSL ES 3.0的着色器语言,并且支持其绝大多数的数据类型和函数,尚未完全支持的部分也会逐渐增加进去. 如果你对GLSL熟悉的话,可以直接阅读 <Go ...

  7. VSCode调试leetcode的cpp以及c语言(windows)

    VSCode调试leetcode的cpp以及c语言 一.安装vscode以及相应插件 二.配置leetcode插件参数以及登录 三.安装nodejs(很简单) 四.安装编译器 五.Debug需要准备工 ...

  8. GLSL三种基本类型(着色器语言三种变量)

    着色器语言和C语言一样,通过一个表示特定数据类型的关键词声明一个变量,比如int num;通过int关键字声明一个整数型变量num,不过着色器语言还提供了三个关键字attribute.uniform和 ...

  9. OpenGL ES着色器语言(GLSL ES)规范 ——下篇

    文章目录 前言 分支和循环 if.if-else for continue.break.discard 着色器内置变量 函数 函数定义 规范声明 webgl内置函数 存储限定字 const attri ...

  10. OpenGLES2.0着色器语言glsl

    OpenGLES2.0中是强制使用可编程的渲染管线的,使用的是glsl着色器语言,因为着色器语言是使用的GPU,即图形处理单元,而不是CPU,这样可以使CPU从繁重的几何计算和像素的处理中解脱出来了. ...

最新文章

  1. 3399 cpu绑核
  2. db2-存储过程word版
  3. vs2019键盘钩子_C#键盘按键监视
  4. 学习笔记(二)——CSS基础
  5. Fiori launchpad里Enter Group name这个tile是怎么配置出来的
  6. python本地编译器_Python学习札记(0)——Python开发环境搭载及推荐几款Python编译器...
  7. 远程登录的几种方式对比
  8. python -sorted 学习
  9. 制作GHOST XP 基于自由天空驱动包+SysPacker 2.1
  10. LR之Java Vuser
  11. hql中获取前一天的数据_如何使用DNS和SQLi从数据库中获取数据样本
  12. html页面 js注释,html、css和js注释的规范用法
  13. 百度地图开发入门(4):散点图示例
  14. Codeforces Round #734 (Div. 3)_B2. Wonderful Coloring - 2(贪心)
  15. 龙芯笔记本走出国门的困惑
  16. 读《长安的荔枝》有感
  17. The authenticity of host 'localhost (127.0.0.1)' can't be established的处理方法
  18. s60v5全屏幕java_【转】 最新消息 ● S60v5官方华丽升级塞班^3系统java v2.1(亲测有效)...
  19. 音响店VCD零售/出租系统(软件定义)
  20. linux 进程调度 内存,linux学习的任督二脉-进程调度和内存管理

热门文章

  1. Windows2008 Server 常规设置及基本安全策略
  2. 基于Intel E5V4计算刀片的RapidIO性能测试
  3. nodejs面试题集锦
  4. 基于Python实现神经网络中的激活函数图像绘制
  5. 互联网架构的软件架构是否会对车用软件等传统嵌入式领域的系统架构产生影响
  6. 舞乙HiME 舞HiME
  7. HDU - 1248 寒冰王座 (完全背包
  8. 达芬奇17的初级剪辑教程
  9. 代码签名证书如何申请,有什么好处?
  10. skimage.measure.label和skimage.measure.regionprops()