单词接龙 题目描述 晶晶同学刚刚学会接龙游戏,接龙游戏是这样玩的,第一个同学说出一个英文单词,第二个同学只要能想出一个单词,该单词的第一个字母和上一个单词的最后一个字母只要相同,就算接龙成功。 比如:page earth habit ten nose,这 5 个单词就成功组成了一条龙; 而 page nose 这两个单词就是不能接上的龙。 晶晶想知道,如果读入一句英文,该句子中只包含若干英文单词和空格(单词都是由小写字母组成,单词之间由 1 个或多个空格隔开),那么这些单词能成功接龙吗? 如果能够成功接龙,请输出 Y,否则请输出 N。 输入 输入 11 行,有一个英文句子,英文句子包含若干单词,单词数量不超过 20 个,且都是由小写字母组成,单词之间由一个或多个空格隔开(第一个单词前和最后一个单词后也可能有空格)。 输出 能成功接龙请输出 Y,否则输出 N。 样例 输入复制 panda an name east tape empty year red 输出复制 Y 输入复制 white eazy yellow network ok 输出复制 N c++代码
时间: 2024-02-15 11:05:58 浏览: 300
单词接龙.md
冲区中读取一个字符并输出。在每个读写缓冲区的操作中,我们先对互斥锁进行加锁,避免多个进程同时访问缓冲区。在写缓冲区时,先对可写入空以下是C++代码实现:
```c++
#include <iostream>
#include <string>
using namespace std;
int main() {
string闲空间的信号量进行 P 操作,表示缓冲区中有一个空闲空间被占用。如果缓冲 s[21]; // 定义字符串数组,存储每个单词
int n = 0; // 记录单词区已满,则生产者进程会被阻塞。在读缓冲区时,先对可读取产品的信数量
while (cin >> s[n++]); // 读入单词,直到读到文件结束符(Ctrl+Z)或者输入结束符(回车)
for (int i = 0; i < n - 2; i++) {号量进行 P 操作,表示缓冲区中有一个产品被读取。如果缓冲区为空,则消费者进程 // 遍历单词数组,判断是否能接龙
if (s[i][s[i].size() - 1] !=会被阻塞。在读写缓冲区完成后,释放互斥锁,并对可写入空闲空间的信号量或可读取产品的信号量进行 V 操作,表示缓冲区中有一个空闲空间或一个 s[i + 1][0]) { // 如果当前单词的最后一个字母与下一个单词的第一个字产品被释放。
总结:本实验通过信号量实现了生产者消费者问题的多进程母不相同
cout << "N" << endl; // 输出 N,表示不能接龙
return 0; //并发控制,实现了两个生产者进程和三个消费者进程之间对缓冲区 结束程序
}
}
cout << "Y" << endl; // 如果能遍历到这里,说明可以成功接龙,输出 Y
return 0;
}
```
阅读全文