题目信息

题目类型
入门级
题目年份
2022
题目题型
综合题
关 键 词
洪水填充

题目题干

第 20 题

(2)(洪水填充)

现有用字符标记像素颜色的 8\times 88×8 图像。颜色填充的操作描述如下:给定起始像素的位置待填充的颜色,将起始像素和所有可达的像素(可达的定义:经过一次或多次的向上、下、左、右四个方向移动所能到达且终点和路径上所有像素的颜色都与起始像素颜色相同),替换为给定的颜色。SjV100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

试补全程序。SjV100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

 
  1. #include<bits/stdc++.h> 
  2. using namespace std; 
  3.  
  4. const int ROWS = 8; 
  5. const int COLS = 8; 
  6.  
  7. struct Point { 
  8.     int r, c; 
  9.     Point(int r, int c): r(r), c(c) {} 
  10. }; 
  11.  
  12. bool is_valid(char image[ROWS][COLS], Point pt, 
  13.               int prev_color, int new_color) { 
  14.     int r = pt.r; 
  15.     int c = pt.c; 
  16.     return (0 <= r && r < ROWS && 0 <= c && c < COLS && 
  17.             ① && image[r][c] != new_color); 
  18.  
  19. void flood_fill(char image[ROWS][COLS], Point cur, int new_color) { 
  20.     queue<Point> queue; 
  21.     queue.push(cur); 
  22.  
  23.     int prev_color = image[cur.r][cur.c]; 
  24.     ②; 
  25.  
  26.     while (!queue.empty()) { 
  27.         Point pt = queue.front (); 
  28.         queue.pop (); 
  29.  
  30.         Point points[4] = {③, Point(pt.r - 1, pt.c), 
  31.                            Point(pt.r, pt.c + 1), Point(pt.r, pt.c - 1)}; 
  32.         for (auto p ; points) { 
  33.             if (is_valid(image, p, prev_color, new_color)) { 
  34.                 ④; 
  35.                 ⑤; 
  36.             } 
  37.         } 
  38.     } 
  39.  
  40. int main() { 
  41.     char image[ROWS][COLS] = {{'g''g''g''g''g''g''g''g'}, 
  42.                               {'g''g''g''g''g''g''r''r'}, 
  43.                               {'g''r''r''g''g''r''g''g'}, 
  44.                               {'g''b''b''b''b''r''g''r'}, 
  45.                               {'g''g''g''b''b''r''g''r'}, 
  46.                               {'g''g''g''b''b''b''b''r'}, 
  47.                               {'g''g''g''g''g''b''g''g'}, 
  48.                               {'g''g''g''g''g''b''b''g'}}; 
  49.  
  50.     Point cur(4, 4); 
  51.     char new_color = 'y'
  52.  
  53.     flood_fill(image, cur, new_color); 
  54.  
  55.     for (int r = 0; r < ROWS; r++) { 
  56.         for (int c = 0; c < COLS; c++) { 
  57.             cout << image[r][c] << ''
  58.         } 
  59.         cout << endl; 
  60.     } 
  61. //输出: 
  62. // g g g g g g g g 
  63. // g g g g g g r r 
  64. // g r r g g r g g 
  65. // g y y y y r g r 
  66. // g g g y y r g r 
  67. // g g g y y y y r 
  68. // g g g g g y g g 
  69. // g g g g g y y g 
  70.  
  71.     return 0; 
SjV100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
①~⑤处应填( )SjV100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
1.SjV100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
 A. image[r][c] == prev_colorSjV100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
 B. `image[r][c] != prev_colorSjV100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
 C. image[r][c] == new_colorSjV100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
 D. image[r][c] != new_colorSjV100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
2.SjV100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
 A. image[cur.r+1][cur.c] = new_colorSjV100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
 B. image[cur.r][cur.c] = new_colorSjV100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
 C. image[cur.r][cur.c+1] = new_colorSjV100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
 D. image[cur.r][cur.c] = prev_colorSjV100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
3.SjV100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
 A. Point(pt.r, pt.c)SjV100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
 B. Point(pt.r, pt.c+1)SjV100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
 C. Point(pt.r+1, pt.c)SjV100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
 D. Point(pt.r+1, pt.c+1)SjV100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
4.SjV100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
 A. prev_color = image[p.r][p.c]SjV100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
 B. new_color = image[p.r][p.c]SjV100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
 C. image[p.r][p.c] = prev_colorSjV100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
 D. image[p.r][p.c] = new_colorSjV100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
5.SjV100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
 A. queue.push(p)SjV100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
 B. queue. push (pt)SjV100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
 C. queue.push(cur)SjV100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
 D. queue. push(Point (ROWS, COLS))

答案解析

相关题目

第 20 题 (2)(洪水填充) 现有用字符标记像素颜色的 8\times 88×8 图像。颜色填充的操作描述如下:给定起始像素的位置待填充的颜色,将起始像素和所有可达的像素(可达的定义:经过一次或
第 19 题 (1)(枚举因数)从小到大打印正整数 nn 的所有正因数。 试补全枚举程序。 #include <bits/stdc++.h>  using namespace std; 
第 18 题(3) 1  #include <iostream>  2    3  using namespace std;  4    5  int n,k;  6    7  int 
第 17 题 (2) 1  #include <algorithm>  2  #include <iostream>  3  #include <limits> 
第 16 题 (1) #include <iostream>     using namespace std;       int main()    {        unsigned 
第 15 题 以下对递归方法的描述中,正确的是:( ) A.递归是允许使用多组参数调用函数的编程技术 B.递归是通过调用自身来求解问题的编程技术 C.递归是面向对象和数据而不是功能和逻辑的编程
第 14 题 一个字符串中任意个连续的字符组成的子序列称为该字符串的子串,则字符串 abcab 有( )个内容互不相同的子串。 A.12 B.13 C.14 D.15
第 13 题 八进制数 32.1 对应的十进制数是( )。 A.24.125 B.24.250 C.26.125 D.26.250
第 12 题 以下排序算法的常见实现中,哪个选项的说法是错误的:( )。 A.冒泡排序算法是稳定的 B.简单选择排序是稳定的 C.简单插入排序是稳定的 D.归并排序算法是稳定的
第 11 题 以下哪组操作能完成在双向循环链表结点 p 之后插入结点 s 的效果(其中,next 域为结点的直接后继,prev 域为结点的直接前驱):( )。 A.p->next->p

提示声明

  • 免责声明:本站资源均来自网络或者用户投稿,仅供用于学习和交流:如有侵权联系删除!
  • 温馨提示:本文属于积分文章,需要充值获得积分或升级VIP会员,也可在会员中心投稿获取。

猜你喜欢