利用百度快照搜索消失的网站,深圳网站建设哪家公司便宜,wordpress 个人资料页,企业购网站建设题目
前缀码#xff1a;任何一个字符的编码都不是同一字符集中另一个字符的编码的前缀。
请编写一个程序#xff0c;判断输入的n个由1和0组成的编码是否为前缀码。如果这n个编码是前缀码#xff0c;则输出YES”#xff1b;否则输出第一个与前面编码发生矛盾的编码。…题目
前缀码任何一个字符的编码都不是同一字符集中另一个字符的编码的前缀。
请编写一个程序判断输入的n个由1和0组成的编码是否为前缀码。如果这n个编码是前缀码则输出YES”否则输出第一个与前面编码发生矛盾的编码。
输入 第1行为n表示下面有n行编码 第2n1行为n个由0或1组成的编码
输出判断结果 例如如果输入 5
00
01
10
110
111
每一个字符均不是其他字符编码的前缀所以输出YES
再如如果输入 5
00
01
10
110
11
编码11与前面的编码110的前缀所以输出11
测试输入期待的输出时间限制内存限制额外进程测试用例 1以文本方式显示 5↵00↵01↵10↵110↵111↵以文本方式显示 YES↵1秒64M0测试用例 2以文本方式显示 5↵00↵01↵10↵110↵11↵以文本方式显示 11↵1秒64M0测试用例 3以文本方式显示 5↵00↵01↵10↵11↵111↵以文本方式显示 111↵1秒64M0测试用例 4以文本方式显示 5↵111↵110↵10↵01↵00↵以文本方式显示 YES↵1秒64M0测试用例 5以文本方式显示 8↵00↵010↵0110↵0111↵10↵110↵1110↵1111↵以文本方式显示 YES↵1秒64M0测试用例 6以文本方式显示 8↵00↵010↵0110↵0111↵10↵11↵1110↵111↵以文本方式显示 1110↵1秒64M0 C代码
#include iostream
#include vector using namespace std; // 定义二叉树的节点包含一个布尔型成员变量 is_end 和一个 TreeNode 指针数组 next
struct TreeNode { bool is_end; // 布尔型变量表示当前节点是否是一个字符串的结束 TreeNode* next[2]; // TreeNode 指针数组表示下一个节点 TreeNode() : is_end(false) { // 构造函数初始化变量 next[0] nullptr; // 下一个节点的第一部分设为空 next[1] nullptr; // 下一个节点的第二部分设为空 }
}; // 插入函数在二叉树中插入一个字符串
bool insert(TreeNode* root, string code) { TreeNode* node root; for (int i 0; i code.size(); i) { int index code[i] - 0; // 计算字符对应的索引 if (!node-next[index]) { // 判断子节点是否为空 node-next[index] new TreeNode(); } node node-next[index]; // 移动到下一个子节点 if (node-is_end) { // 如果此节点是字符串的结束则插入失败 return false; } } node-is_end true; // 标记插入的字符串结束的位置 return !node-next[0] !node-next[1]; // 插入成功条件是当前节点无子节点
} // 主函数
int main() { int n; cin n; // 输入字符串的数量 TreeNode* root new TreeNode(); // 创建新的二叉树 for (int i 0; i n; i) { string code; cin code; // 读取待插入的字符串 if (!insert(root, code)) { // 如果插入失败返回 false cout code endl; // 输出字符串 delete root; // 释放内存 return 0; // 程序错误退出 } } cout YES endl; // 所有字符串都插入成功输出YES delete root; // 释放内存 return 0; // 程序正常退出
}
跳至...