Jz 镇市民广场一处灯带连成一条直线,由四种颜色的灯泡组成:红、蓝、黄、绿。灯带的制作规则为:任取四个连续的灯泡,不会有同颜色的存在。例如,灯带可以看起来像"YBGRYBGRYB"、"RYGBRYGBRYG"、"GYRBG"这样,但不能像 "BRYGR"、"GRBYRBYGR "或 "GBYGYG"这样。这里 "R"代表红色,"B"表示蓝色,"Y"-黄色,"G"-绿色。 由于时间久远,一些灯泡已经熄灭不在工作,但每一种颜色至少有一个灯还亮着,利用给出的灯光排列信息,计算四种颜色的坏灯泡数量。 输入 一行,一个长为 n 的字符串s (4 ≤ n ≤ 100),它描述了灯带的运行状态,其中第 i 个字符描述了第 i 个灯泡的颜色: 'R' - 灯泡是红色的; 'B' - 灯泡是蓝色的; 'Y' - 灯泡是黄色的; 'G' - 灯泡是绿色的; '!' - 灯泡坏了。 除了上述的五个字符外,字符串s不包含其他字符。 数据保证给定的字符串 'R'、'B'、'Y' 和 'G' 四个字母各至少出现一次。 输出 四个整数 sr, sb, sy, sg,表示红、蓝、黄、绿颜色坏灯泡的数量。 样例 输入1 复制 RYBGRYBGR 输出1 复制 0 0 0 0 输入2 复制 !RGYB 输出2 复制 0 1 0 0 输入3 复制 !!!!YGRB 输出3 复制 1 1 1 1 输入4 复制 !GB!RG!Y! 输出4 复制 2 1 1 0 提示 【样例解释】 在第一个样例中,没有坏的灯泡。 在第二个样例中,很明显,一个蓝色的灯泡被炸毁了,因为根据规则,它的位置上不可能有其他颜色的灯泡。 【数据范围与约定】 5%的数据,只有一只坏灯泡; 70%的数据,至少一个地方有连续的三个好灯泡; 100%的数据,4 ≤ n ≤ 100,每种颜色的灯泡至少有一个是好的。 c++
时间: 2024-04-11 22:28:00 浏览: 26
下面是一个解决这个问题的C++代码示例:
```cpp
#include <iostream>
using namespace std;
int main() {
string s;
cin >> s;
int sr = 0, sb = 0, sy = 0, sg = 0; // 红、蓝、黄、绿颜色坏灯泡的数量
for (int i = 0; i < s.length(); i++) {
if (s[i] == '!') {
if (i % 4 == 0) sr++; // 红色灯泡位置
else if (i % 4 == 1) sb++; // 蓝色灯泡位置
else if (i % 4 == 2) sy++; // 黄色灯泡位置
else if (i % 4 == 3) sg++;***
相关问题
编程:在640*480的屏幕的正中间打印显示一个红色的,边长为100的正方形
以下是汇编语言的代码实现:
```
MOV AX, 13H ; 将13H存放到AX寄存器中,表示切换到VGA 320x200 256色图形模式
INT 10H ; 调用BIOS中断,切换到图形模式
MOV AX, 0A000H ; 将A000H存放到AX寄存器中,表示显存起始地址
MOV ES, AX ; 将ES寄存器设置为A000H,即将ES指向显存
MOV CX, 100 ; 将正方形边长设置为100
MOV DX, 270 ; 将正方形左上角的Y坐标设置为240 - 100 / 2 = 270
MOV SI, 170 ; 将正方形左上角的X坐标设置为320 - 100 / 2 = 170
; 循环开始
LOOP_START:
MOV DI, SI ; 将DI寄存器设置为当前列的X坐标
ADD DI, CX ; 将DI寄存器加上正方形的边长,即指向正方形右侧相邻的像素点
MOV AX, 4C00H ; 将4C00H存放到AX寄存器中,表示程序结束
CMP DI, SI ; 判断DI是否等于右边界的X坐标
JZ LOOP_END ; 如果DI等于右边界的X坐标,跳转到LOOP_END结束程序
MOV BX, DX ; 将BX寄存器设置为当前行的Y坐标
ADD BX, CX ; 将BX寄存器加上正方形的边长,即指向正方形下方相邻的像素点
MOV [ES:BX*640+DI], 4C ; 将当前像素点的颜色设置为红色
JMP LOOP_START ; 跳转到循环开始处,继续绘制正方形
LOOP_END:
MOV AX, 4C00H ; 将4C00H存放到AX寄存器中,表示程序结束
INT 21H ; 调用DOS中断,结束程序
```
解释:
首先,使用INT 10H中断调用,将屏幕切换到VGA 320x200 256色图形模式,并将显存起始地址设置为A000H。
然后,将正方形的边长设置为100,将正方形的左上角的X坐标设置为320 - 100 / 2 = 170,将正方形的左上角的Y坐标设置为240 - 100 / 2 = 270。
在循环体内,我们使用MOV指令将DI寄存器设置为当前列的X坐标,并使用ADD指令将DI寄存器加上正方形边长,即指向正方形右侧相邻的像素点。然后,使用CMP指令判断DI是否等于右边界的X坐标,如果是则跳转到LOOP_END结束程序。接着,我们将BX寄存器设置为当前行的Y坐标,并使用ADD指令将BX寄存器加上正方形边长,即指向正方形下方相邻的像素点。最后,使用MOV指令将当前像素点的颜色设置为红色。
需要注意的是,在程序结束之前,我们需要使用INT 21H中断调用,结束程序。
另外,由于我们使用的是320x200像素的图形模式,因此需要将正方形的左上角的X坐标和Y坐标分别设置为320和240,然后再减去正方形边长的一半,才能使正方形居中显示。同时,我们需要将每个像素点的颜色设置为256色调色板中的一个索引,这里我们将红色的索引设置为4C。
jz54 字符流中第一个不重复的字符 java
在字符串"jz54"中,我们需要找出字符流中第一个不重复的字符。首先,我们可以创建一个HashMap来存储字符和对应的出现次数。
假设字符流每次传入一个字符c:
1. 首先判断HashMap中是否已经存在字符c。若存在,则将对应的出现次数加1;
2. 若不存在,则将字符c添加到HashMap中,并将出现次数设为1。
3. 然后从字符流中取出HashMap中第一个出现次数为1的字符,即为第一个不重复的字符。
以下是相应的Java代码:
```java
import java.util.HashMap;
public class FirstNonRepeatChar {
private HashMap<Character, Integer> charMap;
public FirstNonRepeatChar() {
charMap = new HashMap<Character, Integer>();
}
public void processChar(char c) {
if (charMap.containsKey(c)) {
charMap.put(c, charMap.get(c) + 1);
} else {
charMap.put(c, 1);
}
}
public char getFirstNonRepeatChar() {
for (char c : charMap.keySet()) {
if (charMap.get(c) == 1) {
return c;
}
}
return Character.MIN_VALUE; // 如果没有不重复的字符,返回一个特殊值
}
public static void main(String[] args) {
FirstNonRepeatChar f = new FirstNonRepeatChar();
String input = "jz54";
for (int i = 0; i < input.length(); i++) {
f.processChar(input.charAt(i));
}
char firstNonRepeatChar = f.getFirstNonRepeatChar();
if (firstNonRepeatChar == Character.MIN_VALUE) {
System.out.println("字符流中没有不重复的字符");
} else {
System.out.println("字符流中第一个不重复的字符是:" + firstNonRepeatChar);
}
}
}
```
运行以上代码,输出结果为:"字符流中第一个不重复的字符是:j"。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![.rar](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)