{"id":226,"date":"2024-05-19T10:30:07","date_gmt":"2024-05-19T02:30:07","guid":{"rendered":"http:\/\/47.108.179.73\/?p=226"},"modified":"2024-05-19T10:50:10","modified_gmt":"2024-05-19T02:50:10","slug":"huffman%e7%bc%96%e7%a0%81%e4%b8%8emorse%e7%94%b5%e7%a0%81","status":"publish","type":"post","link":"https:\/\/loyeh.top\/index.php\/2024\/05\/19\/huffman%e7%bc%96%e7%a0%81%e4%b8%8emorse%e7%94%b5%e7%a0%81\/","title":{"rendered":"Huffman\u7f16\u7801\u4e0eMorse\u7535\u7801"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Huffman\u7f16\u7801<\/h2>\n\n\n\n<p>Huffman\u7f16\u7801\u662f\u4e00\u79cd\u65e0\u635f\u6570\u636e\u538b\u7f29\u7b97\u6cd5\uff0c\u901a\u8fc7\u4f7f\u7528\u53d8\u957f\u7f16\u7801\u8868\u5bf9\u6e90\u7b26\u53f7\uff08\u5982\u6587\u4ef6\u4e2d\u7684\u4e00\u4e2a\u5b57\u6bcd\uff09\u8fdb\u884c\u7f16\u7801\u3002\u8be5\u53d8\u957f\u7f16\u7801\u8868\u662f\u57fa\u4e8e\u7b26\u53f7\u51fa\u73b0\u7684\u6982\u7387\u6765\u6784\u5efa\u7684\uff1a\u51fa\u73b0\u9891\u7387\u9ad8\u7684\u7b26\u53f7\u4f7f\u7528\u8f83\u77ed\u7684\u7f16\u7801\uff0c\u800c\u51fa\u73b0\u9891\u7387\u4f4e\u7684\u7b26\u53f7\u5219\u4f7f\u7528\u8f83\u957f\u7684\u7f16\u7801\u3002\u8fd9\u79cd\u65b9\u5f0f\u53ef\u4ee5\u6709\u6548\u5730\u51cf\u5c11\u7f16\u7801\u540e\u7684\u5e73\u5747\u957f\u5ea6\u548c\u671f\u671b\u503c\uff0c\u4ece\u800c\u5b9e\u73b0\u6570\u636e\u7684\u65e0\u635f\u538b\u7f29\u3002<\/p>\n\n\n\n<p>\u4f8b\u5982\uff0c\u5728\u82f1\u6587\u6587\u672c\u4e2d\uff0c\u5b57\u6bcde\u7684\u51fa\u73b0\u9891\u7387\u6700\u9ad8\uff0c\u800c\u5b57\u6bcdz\u7684\u51fa\u73b0\u9891\u7387\u6700\u4f4e\u3002\u5f53\u5229\u7528Huffman\u7f16\u7801\u5bf9\u4e00\u7bc7\u82f1\u6587\u6587\u7ae0\u8fdb\u884c\u538b\u7f29\u65f6\uff0ce\u53ef\u80fd\u7528\u4e00\u4e2a\u4f4d\u5143\u6765\u8868\u793a\uff0c\u800cz\u53ef\u80fd\u9700\u898125\u4e2a\u4f4d\u5143\u6765\u8868\u793a\u3002\u76f8\u8f83\u4e8e\u6bcf\u4e2a\u5b57\u6bcd\u56fa\u5b9a\u5360\u75288\u4e2a\u4f4d\u5143\u7684\u666e\u901a\u8868\u793a\u65b9\u6cd5\uff0ce\u7684\u7f16\u7801\u957f\u5ea6\u5927\u5927\u7f29\u77ed\uff0c\u800cz\u7684\u7f16\u7801\u957f\u5ea6\u6709\u6240\u589e\u52a0\u3002\u5982\u679c\u80fd\u51c6\u786e\u4f30\u7b97\u82f1\u6587\u4e2d\u5404\u4e2a\u5b57\u6bcd\u7684\u51fa\u73b0\u6982\u7387\uff0c\u5c31\u53ef\u4ee5\u663e\u8457\u63d0\u9ad8\u65e0\u635f\u538b\u7f29\u7684\u6548\u7387\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Huffman\u6811<\/h2>\n\n\n\n<p>Huffman\u6811\uff0c\u4e5f\u79f0\u6700\u4f18\u4e8c\u53c9\u6811\uff0c\u662f\u4e00\u79cd\u5e26\u6743\u8def\u5f84\u957f\u5ea6\u6700\u77ed\u7684\u4e8c\u53c9\u6811\u3002\u6811\u7684\u5e26\u6743\u8def\u5f84\u957f\u5ea6\u662f\u6811\u4e2d\u6240\u6709\u53f6\u7ed3\u70b9\u7684\u6743\u503c\u4e58\u4ee5\u5176\u5230\u6839\u7ed3\u70b9\u7684\u8def\u5f84\u957f\u5ea6\u4e4b\u548c\u3002\u5177\u4f53\u6784\u5efa\u8fc7\u7a0b\u5982\u4e0b\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u7edf\u8ba1\u9891\u7387<\/strong>\uff1a\u8ba1\u7b97\u6bcf\u4e2a\u5b57\u7b26\u5728\u8f93\u5165\u6570\u636e\u4e2d\u7684\u51fa\u73b0\u9891\u7387\u3002<\/li>\n\n\n\n<li><strong>\u6784\u5efa\u4f18\u5148\u961f\u5217<\/strong>\uff1a\u5c06\u6bcf\u4e2a\u5b57\u7b26\u53ca\u5176\u9891\u7387\u4f5c\u4e3a\u4e00\u4e2a\u8282\u70b9\uff0c\u653e\u5165\u4f18\u5148\u961f\u5217\uff08\u6700\u5c0f\u5806\uff09\u3002<\/li>\n\n\n\n<li><strong>\u751f\u6210Huffman\u6811<\/strong>\uff1a\u91cd\u590d\u4ee5\u4e0b\u6b65\u9aa4\u76f4\u5230\u961f\u5217\u4e2d\u53ea\u5269\u4e00\u4e2a\u8282\u70b9\uff1a\n<ul class=\"wp-block-list\">\n<li>\u4ece\u961f\u5217\u4e2d\u53d6\u51fa\u4e24\u4e2a\u9891\u7387\u6700\u5c0f\u7684\u8282\u70b9\uff0c\u4f5c\u4e3a\u5de6\u53f3\u5b50\u8282\u70b9\u521b\u5efa\u4e00\u4e2a\u65b0\u7684\u7236\u8282\u70b9\uff0c\u5176\u9891\u7387\u4e3a\u4e24\u4e2a\u5b50\u8282\u70b9\u9891\u7387\u4e4b\u548c\u3002<\/li>\n\n\n\n<li>\u5c06\u65b0\u8282\u70b9\u63d2\u5165\u961f\u5217\u3002<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u751f\u6210\u7f16\u7801<\/strong>\uff1a\u4ece\u6839\u8282\u70b9\u5f00\u59cb\uff0c\u4e3a\u6bcf\u4e2a\u5de6\u8fb9\u8def\u5f84\u5206\u914d0\uff0c\u53f3\u8fb9\u8def\u5f84\u5206\u914d1\uff0c\u76f4\u5230\u8fbe\u5230\u53f6\u8282\u70b9\uff0c\u6bcf\u4e2a\u53f6\u8282\u70b9\u7684\u8def\u5f84\u5c31\u662f\u5bf9\u5e94\u5b57\u7b26\u7684Huffman\u7f16\u7801\u3002<\/li>\n<\/ol>\n\n\n\n<p>Huffman\u6811\u7684\u8def\u5f84\u957f\u5ea6\u603b\u548c\uff08WPL\uff09\u662f\u6700\u5c0f\u7684\uff0c\u8fd9\u53ef\u4ee5\u901a\u8fc7\u6784\u9020\u8fc7\u7a0b\u4e2d\u7684\u8d2a\u5fc3\u7b56\u7565\u8bc1\u660e\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u7f16\u7801\u5b9e\u73b0<\/h2>\n\n\n\n<p>\u4f7f\u7528Huffman\u7b97\u6cd5\u5bf9\u4e00\u7ec4\u5b57\u7b26\u8fdb\u884c\u7f16\u7801\uff0c\u5e76\u6253\u5370\u51fa\u6bcf\u4e2a\u5b57\u7b26\u7684Huffman\u7f16\u7801\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;stdio.h&gt;\n#include &lt;stdlib.h&gt;\n#include &lt;string.h&gt;\n\n#define MAX_TREE_HT 100\n\n\/\/ Huffman\u6811\u8282\u70b9\ntypedef struct HuffmanNode {\n    char data;\n    unsigned freq;\n    struct HuffmanNode *left, *right;\n} HuffmanNode;\n\n\/\/ \u4f18\u5148\u961f\u5217\u8282\u70b9\ntypedef struct MinHeapNode {\n    unsigned size;\n    unsigned capacity;\n    HuffmanNode **array;\n} MinHeap;\n\n\/\/ \u521b\u5efa\u4e00\u4e2a\u65b0\u7684Huffman\u8282\u70b9\nHuffmanNode* createNode(char data, unsigned freq) {\n    HuffmanNode* node = (HuffmanNode*)malloc(sizeof(HuffmanNode));\n    node-&gt;data = data;\n    node-&gt;freq = freq;\n    node-&gt;left = node-&gt;right = NULL;\n    return node;\n}\n\n\/\/ \u521b\u5efa\u4e00\u4e2a\u6700\u5c0f\u5806\u8282\u70b9\nMinHeap* createMinHeap(unsigned capacity) {\n    MinHeap* minHeap = (MinHeap*)malloc(sizeof(MinHeap));\n    minHeap-&gt;size = 0;\n    minHeap-&gt;capacity = capacity;\n    minHeap-&gt;array = (HuffmanNode**)malloc(minHeap-&gt;capacity * sizeof(HuffmanNode*));\n    return minHeap;\n}\n\n\/\/ \u4ea4\u6362\u4e24\u4e2a\u6700\u5c0f\u5806\u8282\u70b9\nvoid swapMinHeapNode(HuffmanNode** a, HuffmanNode** b) {\n    HuffmanNode* t = *a;\n    *a = *b;\n    *b = t;\n}\n\n\/\/ \u6700\u5c0f\u5806\u5316\nvoid minHeapify(MinHeap* minHeap, int idx) {\n    int smallest = idx;\n    int left = 2 * idx + 1;\n    int right = 2 * idx + 2;\n\n    if (left &lt; minHeap-&gt;size &amp;&amp; minHeap-&gt;array&#91;left]-&gt;freq &lt; minHeap-&gt;array&#91;smallest]-&gt;freq)\n        smallest = left;\n\n    if (right &lt; minHeap-&gt;size &amp;&amp; minHeap-&gt;array&#91;right]-&gt;freq &lt; minHeap-&gt;array&#91;smallest]-&gt;freq)\n        smallest = right;\n\n    if (smallest != idx) {\n        swapMinHeapNode(&amp;minHeap-&gt;array&#91;smallest], &amp;minHeap-&gt;array&#91;idx]);\n        minHeapify(minHeap, smallest);\n    }\n}\n\n\/\/ \u68c0\u67e5\u662f\u5426\u53ea\u6709\u4e00\u4e2a\u8282\u70b9\nint isSizeOne(MinHeap* minHeap) {\n    return (minHeap-&gt;size == 1);\n}\n\n\/\/ \u63d0\u53d6\u6700\u5c0f\u503c\u8282\u70b9\nHuffmanNode* extractMin(MinHeap* minHeap) {\n    HuffmanNode* temp = minHeap-&gt;array&#91;0];\n    minHeap-&gt;array&#91;0] = minHeap-&gt;array&#91;minHeap-&gt;size - 1];\n    --minHeap-&gt;size;\n    minHeapify(minHeap, 0);\n    return temp;\n}\n\n\/\/ \u63d2\u5165\u6700\u5c0f\u5806\nvoid insertMinHeap(MinHeap* minHeap, HuffmanNode* minHeapNode) {\n    ++minHeap-&gt;size;\n    int i = minHeap-&gt;size - 1;\n    while (i &amp;&amp; minHeapNode-&gt;freq &lt; minHeap-&gt;array&#91;(i - 1) \/ 2]-&gt;freq) {\n        minHeap-&gt;array&#91;i] = minHeap-&gt;array&#91;(i - 1) \/ 2];\n        i = (i - 1) \/ 2;\n    }\n    minHeap-&gt;array&#91;i] = minHeapNode;\n}\n\n\/\/ \u6784\u5efa\u6700\u5c0f\u5806\nvoid buildMinHeap(MinHeap* minHeap) {\n    int n = minHeap-&gt;size - 1;\n    int i;\n    for (i = (n - 1) \/ 2; i &gt;= 0; --i)\n        minHeapify(minHeap, i);\n}\n\n\/\/ \u6253\u5370\u6570\u7ec4\nvoid printArr(int arr&#91;], int n) {\n    for (int i = 0; i &lt; n; ++i)\n        printf(\"%d\", arr&#91;i]);\n    printf(\"\\n\");\n}\n\n\/\/ \u68c0\u67e5\u662f\u5426\u662f\u53f6\u8282\u70b9\nint isLeaf(HuffmanNode* root) {\n    return !(root-&gt;left) &amp;&amp; !(root-&gt;right);\n}\n\n\/\/ \u521b\u5efa\u5e76\u6784\u5efa\u6700\u5c0f\u5806\nMinHeap* createAndBuildMinHeap(char data&#91;], int freq&#91;], int size) {\n    MinHeap* minHeap = createMinHeap(size);\n    for (int i = 0; i &lt; size; ++i)\n        minHeap-&gt;array&#91;i] = createNode(data&#91;i], freq&#91;i]);\n    minHeap-&gt;size = size;\n    buildMinHeap(minHeap);\n    return minHeap;\n}\n\n\/\/ \u6784\u5efaHuffman\u6811\nHuffmanNode* buildHuffmanTree(char data&#91;], int freq&#91;], int size) {\n    HuffmanNode *left, *right, *top;\n    MinHeap* minHeap = createAndBuildMinHeap(data, freq, size);\n    while (!isSizeOne(minHeap)) {\n        left = extractMin(minHeap);\n        right = extractMin(minHeap);\n        top = createNode('$', left-&gt;freq + right-&gt;freq);\n        top-&gt;left = left;\n        top-&gt;right = right;\n        insertMinHeap(minHeap, top);\n    }\n    return extractMin(minHeap);\n}\n\n\/\/ \u6253\u5370Huffman\u7f16\u7801\nvoid printCodes(HuffmanNode* root, int arr&#91;], int top) {\n    if (root-&gt;left) {\n        arr&#91;top] = 0;\n        printCodes(root-&gt;left, arr, top + 1);\n    }\n    if (root-&gt;right) {\n        arr&#91;top] = 1;\n        printCodes(root-&gt;right, arr, top + 1);\n    }\n    if (isLeaf(root)) {\n        printf(\"%c: \", root-&gt;data);\n        printArr(arr, top);\n    }\n}\n\n\/\/ \u6784\u5efa\u5e76\u6253\u5370Huffman\u7f16\u7801\nvoid HuffmanCodes(char data&#91;], int freq&#91;], int size) {\n    HuffmanNode* root = buildHuffmanTree(data, freq, size);\n    int arr&#91;MAX_TREE_HT], top = 0;\n    printCodes(root, arr, top);\n}\n\nint main() {\n    char arr&#91;] = { 'a', 'b', 'c', 'd', 'e', 'f' };\n    int freq&#91;] = { 5, 9, 12, 13, 16, 45 };\n    int size = sizeof(arr) \/ sizeof(arr&#91;0]);\n    HuffmanCodes(arr, freq, size);\n    return 0;\n}<\/code><\/pre>\n\n\n\n<p><strong>\u6ce8\u89e3\uff1a<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u9891\u7387\u6570\u7ec4\u548c\u5b57\u7b26\u6570\u7ec4<\/strong>\uff1a<code>arr[]<\/code>\u548c<code>freq[]<\/code>\u5206\u522b\u5b58\u50a8\u4e86\u5b57\u7b26\u548c\u5b83\u4eec\u7684\u9891\u7387\u3002\u5728\u4e3b\u7a0b\u5e8f\u4e2d\uff0c\u6211\u4eec\u4f7f\u7528\u8fd9\u4e9b\u6570\u7ec4\u6765\u6784\u5efaHuffman\u6811\u3002<\/li>\n\n\n\n<li><strong>\u6784\u5efaHuffman\u6811<\/strong>\uff1a\u6211\u4eec\u9996\u5148\u521b\u5efa\u4e00\u4e2a\u6700\u5c0f\u5806\uff0c\u5305\u542b\u6240\u6709\u5b57\u7b26\u3002\u7136\u540e\uff0c\u6211\u4eec\u53cd\u590d\u4ece\u5806\u4e2d\u53d6\u51fa\u4e24\u4e2a\u9891\u7387\u6700\u5c0f\u7684\u8282\u70b9\uff0c\u521b\u5efa\u4e00\u4e2a\u65b0\u7684\u5185\u90e8\u8282\u70b9\u5e76\u63d2\u5165\u56de\u5806\u4e2d\uff0c\u76f4\u5230\u5806\u4e2d\u53ea\u6709\u4e00\u4e2a\u8282\u70b9\uff0c\u8fd9\u4e2a\u8282\u70b9\u5c31\u662fHuffman\u6811\u7684\u6839\u3002<\/li>\n\n\n\n<li><strong>\u6253\u5370Huffman\u7f16\u7801<\/strong>\uff1a\u6211\u4eec\u4ece\u6839\u8282\u70b9\u5f00\u59cb\uff0c\u5de6\u8fb9\u8def\u5f84\u8bb0\u4f5c0\uff0c\u53f3\u8fb9\u8def\u5f84\u8bb0\u4f5c1\uff0c\u9012\u5f52\u904d\u5386\u6811\u76f4\u5230\u53f6\u8282\u70b9\uff0c\u6bcf\u4e2a\u53f6\u8282\u70b9\u7684\u8def\u5f84\u5c31\u662f\u8be5\u5b57\u7b26\u7684Huffman\u7f16\u7801\u3002<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Morse\u7f16\u7801<\/h2>\n\n\n\n<p>\u6469\u5c14\u65af\u7535\u7801\uff08Morse Code\uff09\u662f\u4e00\u79cd\u65f6\u901a\u65f6\u65ad\u7684\u4fe1\u53f7\u4ee3\u7801\uff0c\u901a\u8fc7\u4e0d\u540c\u7684\u6392\u5217\u987a\u5e8f\u6765\u8868\u8fbe\u4e0d\u540c\u7684\u82f1\u6587\u5b57\u6bcd\u3001\u6570\u5b57\u548c\u6807\u70b9\u7b26\u53f7\u3002\u662f\u7531\u7f8e\u56fd\u4eba\u8428\u7f2a\u5c14\u00b7\u6469\u5c14\u65af\u57281836\u5e74\u53d1\u660e\u7684\u3002<\/p>\n\n\n\n<p>Morse\u7535\u7801\u662f\u4e00\u79cd\u65e9\u671f\u7684\u6570\u7801\u5316\u901a\u4fe1\u5f62\u5f0f\uff0c\u4f46\u4e0d\u540c\u4e8e\u73b0\u4ee3\u53ea\u4f7f\u75280\u548c1\u4e24\u79cd\u72b6\u6001\u7684\u4e8c\u8fdb\u5236\u4ee3\u7801\uff0c\u5b83\u7684\u4ee3\u7801\u5305\u62ec\u4e94\u79cd\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u70b9\uff08.\uff09<\/strong><\/li>\n\n\n\n<li><strong>\u5212\uff08-\uff09<\/strong><\/li>\n\n\n\n<li><strong>\u6bcf\u4e2a\u5b57\u7b26\u95f4\u77ed\u7684\u505c\u987f<\/strong>\uff08\u5728\u70b9\u548c\u5212\u4e4b\u95f4\u7684\u505c\u987f\uff09<\/li>\n\n\n\n<li><strong>\u6bcf\u4e2a\u8bcd\u4e4b\u95f4\u4e2d\u7b49\u7684\u505c\u987f<\/strong><\/li>\n\n\n\n<li><strong>\u53e5\u5b50\u4e4b\u95f4\u957f\u7684\u505c\u987f<\/strong><\/li>\n<\/ol>\n\n\n\n<p>\u901a\u8fc7\u8fd9\u4e9b\u57fa\u672c\u5143\u7d20\u7684\u4e0d\u540c\u7ec4\u5408\uff0cMorse\u7535\u7801\u53ef\u4ee5\u8868\u793a\u5404\u79cd\u5b57\u7b26\u548c\u7b26\u53f7\u3002\u4f8b\u5982\uff0c\u5b57\u6bcdA\u7684Morse\u7535\u7801\u4e3a\".-\"\uff0c\u5b57\u6bcdB\u7684Morse\u7535\u7801\u4e3a\"-...\"\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u7f16\u7801\u5b9e\u73b0<\/h2>\n\n\n\n<p>\u5b9e\u73b0\u6839\u636e\u82f1\u6587\u5b57\u6bcda-z\u7684Morse\u7801\u8868\uff0c\u5bf9\u8f93\u5165\u6587\u6bb5\u8fdb\u884cMorse\u7f16\u7801\uff0c\u5e76\u8ba1\u7b97\u7f16\u7801\u603b\u957f\u5ea6\u548c\u5e73\u5747\u7801\u957f<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;stdio.h&gt;\n#include &lt;string.h&gt;\n#include &lt;ctype.h&gt;\n\n\/\/ Morse\u7801\u8868\nconst char* morseTable&#91;26] = {\n    \".-\", \"-...\", \"-.-.\", \"-..\", \".\", \"..-.\", \"--.\", \"....\", \"..\", \".---\",\n    \"-.-\", \".-..\", \"--\", \"-.\", \"---\", \".--.\", \"--.-\", \".-.\", \"...\", \"-\",\n    \"..-\", \"...-\", \".--\", \"-..-\", \"-.--\", \"--..\"\n};\n\n\/\/ \u83b7\u53d6\u5b57\u7b26\u7684Morse\u7f16\u7801\nconst char* getMorseCode(char c) {\n    if (c &gt;= 'a' &amp;&amp; c &lt;= 'z')\n        return morseTable&#91;c - 'a'];\n    else if (c &gt;= 'A' &amp;&amp; c &lt;= 'Z')\n        return morseTable&#91;c - 'A'];\n    return \"\";\n}\n\n\/\/ \u5bf9\u6307\u5b9a\u6587\u6bb5\u8fdb\u884cMorse\u7f16\u7801\uff0c\u5e76\u8ba1\u7b97\u603b\u957f\u5ea6\u548c\u5e73\u5747\u7801\u957f\nvoid encodeMorse(const char* text) {\n    int totalLength = 0;\n    int charCount = 0;\n\n    for (int i = 0; text&#91;i] != '\\0'; ++i) {\n        if (text&#91;i] == ' ')\n            continue;\n\n        const char* morseCode = getMorseCode(text&#91;i]);\n        printf(\"%s \", morseCode);\n\n        totalLength += strlen(morseCode);\n        charCount++;\n    }\n\n    printf(\"\\n\u603b\u7f16\u7801\u957f\u5ea6: %d\\n\", totalLength);\n    printf(\"\u5e73\u5747\u7801\u957f: %.2f\\n\", (double)totalLength \/ charCount);\n}\n\nint main() {\n    char text&#91;1000];\n    printf(\"\u8bf7\u8f93\u5165\u8981\u7f16\u7801\u7684\u5b57\u7b26\u4e32: \");\n    fgets(text, sizeof(text), stdin);\n    \n    \/\/ \u79fb\u9664fgets\u8bfb\u53d6\u7684\u6362\u884c\u7b26\n    size_t len = strlen(text);\n    if (len &gt; 0 &amp;&amp; text&#91;len-1] == '\\n') {\n        text&#91;len-1] = '\\0';\n    }\n    \n    encodeMorse(text);\n    return 0;\n}<\/code><\/pre>\n\n\n\n<p>\u8f93\u5165\u4efb\u4f55\u5b57\u7b26\u4e32\uff0c\u5e76\u5c06\u5176\u8f6c\u6362\u4e3aMorse\u7f16\u7801\uff0c\u540c\u65f6\u8ba1\u7b97\u5e76\u8f93\u51fa\u7f16\u7801\u7684\u603b\u957f\u5ea6\u548c\u5e73\u5747\u7801\u957f\u3002\u5177\u4f53\u6b65\u9aa4\u5982\u4e0b\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u8f93\u5165\u5b57\u7b26\u4e32<\/strong>\uff1a\u7a0b\u5e8f\u63d0\u793a\u7528\u6237\u8f93\u5165\u8981\u7f16\u7801\u7684\u5b57\u7b26\u4e32\u3002<\/li>\n\n\n\n<li><strong>\u79fb\u9664\u6362\u884c\u7b26<\/strong>\uff1a\u7531\u4e8e\u4f7f\u7528<code>fgets<\/code>\u8bfb\u53d6\u8f93\u5165\uff0c\u4f1a\u5305\u542b\u6362\u884c\u7b26\uff0c\u9700\u8981\u79fb\u9664\u3002<\/li>\n\n\n\n<li><strong>\u7f16\u7801\u5e76\u8ba1\u7b97\u957f\u5ea6<\/strong>\uff1a\u7a0b\u5e8f\u5c06\u5b57\u7b26\u4e32\u4e2d\u7684\u6bcf\u4e2a\u5b57\u7b26\u8f6c\u6362\u4e3a\u5bf9\u5e94\u7684Morse\u7801\uff0c\u5e76\u8ba1\u7b97\u603b\u957f\u5ea6\u548c\u5e73\u5747\u7801\u957f\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u8be5\u7a0b\u5e8f\u652f\u6301\u5927\u5c0f\u5199\u5b57\u6bcd\u7684Morse\u7f16\u7801\uff0c\u5e76\u5ffd\u7565\u7a7a\u683c\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Morse\u7535\u7801\u7684\u52a9\u8bb0<\/h2>\n\n\n\n<figure class=\"wp-block-video\"><video controls src=\"https:\/\/www.bilibili.com\/video\/BV1N1421z7Ng\"><\/video><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u53c2\u8003<\/h2>\n\n\n\n<p><a href=\"https:\/\/www.bilibili.com\/video\/BV1N1421z7Ng\/?spm_id_from=333.999.0.0&amp;vd_source=923576200c9e01ef7a19af269b7702a0\" target=\"_blank\"  rel=\"nofollow\" >\u3010\u6469\u65af\u5bc6\u7801\u3011\u53f2\u4e0a\u6700\u62bd\u8c61\u7684\u8bed\u8a00\uff0c\u4f46\u4e5f\u6700\u597d\u61c2\u2026_\u54d4\u54e9\u54d4\u54e9_bilibili<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Huffman\u7f16\u7801 Huffman\u7f16\u7801\u662f\u4e00\u79cd\u65e0\u635f\u6570\u636e\u538b\u7f29\u7b97\u6cd5\uff0c\u901a\u8fc7\u4f7f\u7528\u53d8\u957f\u7f16\u7801\u8868\u5bf9\u6e90\u7b26\u53f7\uff08\u5982\u6587\u4ef6\u4e2d\u7684\u4e00\u4e2a\u5b57\u6bcd\uff09\u8fdb\u884c\u7f16\u7801\u3002\u8be5\u53d8\u957f\u7f16\u7801 &#8230;<\/p>","protected":false},"author":1,"featured_media":210,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[13],"tags":[],"class_list":["post-226","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ds"],"jetpack_featured_media_url":"https:\/\/loyeh.top\/wp-content\/uploads\/2024\/03\/gaze_02-scaled.jpg","_links":{"self":[{"href":"https:\/\/loyeh.top\/index.php\/wp-json\/wp\/v2\/posts\/226","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/loyeh.top\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/loyeh.top\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/loyeh.top\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/loyeh.top\/index.php\/wp-json\/wp\/v2\/comments?post=226"}],"version-history":[{"count":3,"href":"https:\/\/loyeh.top\/index.php\/wp-json\/wp\/v2\/posts\/226\/revisions"}],"predecessor-version":[{"id":230,"href":"https:\/\/loyeh.top\/index.php\/wp-json\/wp\/v2\/posts\/226\/revisions\/230"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/loyeh.top\/index.php\/wp-json\/wp\/v2\/media\/210"}],"wp:attachment":[{"href":"https:\/\/loyeh.top\/index.php\/wp-json\/wp\/v2\/media?parent=226"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/loyeh.top\/index.php\/wp-json\/wp\/v2\/categories?post=226"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/loyeh.top\/index.php\/wp-json\/wp\/v2\/tags?post=226"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}