在向量

时间:2017-01-10 15:26:57

标签: algorithm

  

问题陈述

     

有时,当计算机程序使用的颜色数量有限时,它们会使用一种称为抖动的技术。抖动是指您使用由不同颜色组成的图案,以便在一起查看颜色时,它们看起来像另一种颜色。例如,您可以使用黑白像素的棋盘图案来实现灰色的幻觉。

     

您正在编写一个程序来确定某种抖动颜色覆盖了多少屏幕。给定计算机屏幕,其中每个像素具有特定颜色,以及构成抖动颜色的所有纯色的列表,返回用于构成抖动颜色的屏幕上的像素数。每个像素将由screen中的字符表示。 screendithered中的每个字符都是一个代表颜色的大写字母('A' - 'Z')。

     

假设dithered中包含的任何颜色像素都是抖动颜色的一部分。

     

DEFINITION

     

班级:ImageDithering
  方法:count
  参数:stringvector <string>
  退货:int
  方法签名:int count(string dithered, vector <string> screen)

     

约束

     
      
  • dithered将包含2到26个大写字母('A' - 'Z'),包括在内。
  •   
  • dithered中不会有重复的字符。
  •   
  • screen将包含1到50个元素。
  •   
  • screen的每个元素将包含1到50个大写字母('A' - 'Z'),包括在内。
  •   
  • screen的所有元素都包含相同数量的字符。
  •   
     

实施例

     

0)

"BW"
{ "AAAAAAAA",
  "ABWBWBWA",
  "AWBWBWBA",
  "ABWBWBWA",
  "AWBWBWBA",
  "AAAAAAAA"}
     

返回:24

     

在这里,我们的抖动颜色可能包括黑色(B)和白色(W)像素,组成一个灰色阴影。在图片中,有一个由另一种颜色(A)包围的抖动灰色方块。

     

1)

"BW"
{ "BBBBBBBB",
  "BBWBWBWB",
  "BWBWBWBB",
  "BBWBWBWB",
  "BWBWBWBB",
  "BBBBBBBB"}
     

返回:48

     

这是相同的图片,但外部颜色替换为黑色像素。虽然实际上,外部像素不会形成抖动颜色,但您的算法仍应假设它们是抖动模式的一部分。

     

2)

"ACEGIKMOQSUWY"
{ "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWX",
  "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWX",
  "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWX",
  "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWX",
  "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWX",
  "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWX"}
     

返回:150

     

垂直条纹的图片,每隔一条纹被视为抖动颜色的一部分。

     

3)

"CA"
{"BBBBBBB",
 "BBBBBBB",
 "BBBBBBB"}
     

返回:0

     

抖动的颜色不存在。

     

4)

"DCBA"
{"ACBD"}
     

返回:4

     

颜色的顺序无关紧要。

我不明白如何计算那些矢量中那些抖动的字符串。

与示例0类似,“ABWBWBWA”行从左侧开始计数3“BW”,从右侧开始计数2“BW”。我该怎么算呢?

1 个答案:

答案 0 :(得分:1)

您不计算整个字符串的实例(例如“BW”),您计算单个字符的实例(例如“B”或“W”)。请参阅规范(我的重点):

  

给定一个计算机屏幕,其中每个像素都有一定的颜色,以及构成抖动颜色的所有纯色的列表,返回屏幕上的像素数,用于制作抖动的颜色。 每个像素将由屏幕中的字符表示。屏幕和抖动中的每个字符将是表示颜色的大写字母('A' - 'Z')。

     

假设任何抖动中包含的颜色的像素都是抖动颜色的一部分。

示例0在屏幕集上有24个“B”和“W”字符实例;例1总共有48个“B”或“W”字符;您应该能够从示例中推断出这一点,因为示例2包含目标字符串“ACEGIKMOQSUWY”的零实例,但返回值非零。