【PTA數據結構 | C語言版】我愛背單詞

本專欄持續輸出數據結構題目集,歡迎訂閱。

文章目錄

    • 題目
    • 代碼

題目

作為一個勤奮的學生,你在閱讀一段英文文章時,是否希望有個程序能自動幫你把沒有背過的生詞列出來?本題就請你實現這個程序。

輸入格式:
輸入第 1 行給出 1 個正整數 n(2≤n≤10^3),為已經背下來的單詞的數量。
接下來輸入的每行是不超過 20 個字符的、僅由小寫英文字母組成的單詞。題目保證沒有重復的單詞。

最后是一段整理好的英文文章,文章僅包含不超過 20 個字符的、僅由小寫英文字母組成的單詞,單詞間以 1 個空格分隔。文章末尾以符號 # 表示結束,這個符號不屬于文章的內容。題目保證文章中至少有 1 個生詞,且全文一共包含不超過 10^3 個單詞。

輸出格式:
找出每個沒有背過的生詞,按照其在文章中出現的順序輸出,每行輸出一個生詞。注意:每個生詞只輸出一遍,不要重復輸出。

輸入樣例:
5
a
your
is
case
correct
this is a test case that test the correctness of your program #

輸出樣例:
this
test
that
the
correctness
of
program

代碼

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>#define MAX_WORD_LENGTH 21  // 最大單詞長度 + 1
#define MAX_VOCABULARY 1000 // 最大詞匯量
#define HASH_TABLE_SIZE 2003 // 哈希表大小,使用質數減少沖突// 哈希表節點結構
typedef struct Node {char word[MAX_WORD_LENGTH];struct Node* next;
} Node;Node* hashTable[HASH_TABLE_SIZE];// 簡單哈希函數
unsigned int hash(const char* str) {unsigned int hashval = 0;for (int i = 0; str[i] != '\0'; i++)hashval = str[i] + (hashval << 6) + (hashval << 16) - hashval;return hashval % HASH_TABLE_SIZE;
}// 插入單詞到哈希表
void insert(const char* word) {unsigned int index = hash(word);Node* newNode = (Node*)malloc(sizeof(Node));strcpy(newNode->word, word);newNode->next = hashTable[index];hashTable[index] = newNode;
}// 檢查單詞是否在哈希表中
int contains(const char* word) {unsigned int index = hash(word);Node* current = hashTable[index];while (current != NULL) {if (strcmp(current->word, word) == 0)return 1;current = current->next;}return 0;
}// 檢查單詞是否已在生詞列表中
int isNewWord(const char**生詞列表, int 生詞數量, const char* word) {for (int i = 0; i < 生詞數量; i++) {if (strcmp(生詞列表[i], word) == 0)return 0;}return 1;
}int main() {int n;char word[MAX_WORD_LENGTH];const char** newWords = NULL;int newWordCount = 0;// 初始化哈希表for (int i = 0; i < HASH_TABLE_SIZE; i++) {hashTable[i] = NULL;}// 讀取已背單詞scanf("%d", &n);for (int i = 0; i < n; i++) {scanf("%s", word);insert(word);}// 讀取文章并處理while (scanf("%s", word) == 1) {if (word[0] == '#') break; // 遇到結束符號// 檢查是否為生詞if (!contains(word) && isNewWord(newWords, newWordCount, word)) {// 動態擴容生詞列表newWords = (const char**)realloc(newWords, (newWordCount + 1) * sizeof(const char*));char* newWord = (char*)malloc((strlen(word) + 1) * sizeof(char));strcpy(newWord, word);newWords[newWordCount++] = newWord;}}// 輸出結果for (int i = 0; i < newWordCount; i++) {printf("%s\n", newWords[i]);}return 0;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/90020.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/90020.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/90020.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何使用電腦連接小米耳機(紅米 redmi耳機)

如何使用電腦連接小米&#xff08;紅米 redmi&#xff09;耳機Redmi耳機連接電腦的具體步驟如下注意事項和常見問題解決方法&#xff1a;Redmi耳機連接電腦的具體步驟如下 打開耳機倉蓋&#xff1a; 首先&#xff0c;打開Redmi耳機的充電倉蓋&#xff0c;但不需要取出耳機。進…

排序算法—交換排序(冒泡、快速)(動圖演示)

目錄 十大排序算法分類?編輯 冒泡排序 算法步驟&#xff1a; 動圖演示&#xff1a; 性能分析&#xff1a; 代碼實現&#xff08;Java&#xff09;&#xff1a; 快速排序&#xff08;挖坑法&#xff09; 算法步驟&#xff1a; 動圖演示&#xff1a; 性能分析&#xff1…

2023 年 5 月青少年軟編等考 C 語言八級真題解析

目錄 T1. 道路 思路分析 T2. Rainbow 的商店 思路分析 T3. 冰闊落 I 思路分析 T4. 青蛙的約會 思路分析 T1. 道路 題目鏈接:SOJ D1216 N N N 個以 1 ~ N 1 \sim N 1~N 標號的城市通過單向的道路相連,每條道路包含兩個參數:道路的長度和需要為該路付的通行費(以金幣的數…

【vue-4】深入理解 Vue 3 中的 v-for 指令

Vue.js 作為現代前端框架的代表之一&#xff0c;其模板指令系統提供了強大的數據綁定和渲染能力。其中&#xff0c;v-for 指令是 Vue 中最常用且最重要的指令之一&#xff0c;它允許我們基于數據源循環渲染元素或組件。在 Vue 3 中&#xff0c;v-for 保留了一貫的簡潔語法&…

《R for Data Science (2e)》免費中文翻譯 (第1章) --- Data visualization(1)

寫在前面 本系列推文為《R for Data Science (2)》的中文翻譯版本。所有內容都通過開源免費的方式上傳至Github&#xff0c;歡迎大家參與貢獻&#xff0c;詳細信息見&#xff1a; Books-zh-cn 項目介紹&#xff1a; Books-zh-cn&#xff1a;開源免費的中文書籍社區 r4ds-zh-cn …

界面組件DevExpress WPF中文教程:Grid - 如何完成節點排序和移動?

DevExpress WPF擁有120個控件和庫&#xff0c;將幫助您交付滿足甚至超出企業需求的高性能業務應用程序。通過DevExpress WPF能創建有著強大互動功能的XAML基礎應用程序&#xff0c;這些應用程序專注于當代客戶的需求和構建未來新一代支持觸摸的解決方案。 無論是Office辦公軟件…

【Prometheus+Grafana篇】監控通過Keepalived實現的MySQL HA高可用架構

&#x1f4ab;《博主主頁》&#xff1a;    &#x1f50e; CSDN主頁__奈斯DB    &#x1f50e; IF Club社區主頁__奈斯、 &#x1f525;《擅長領域》&#xff1a;擅長阿里云AnalyticDB for MySQL(分布式數據倉庫)、Oracle、MySQL、Linux、prometheus監控&#xff1b;并對…

k8s:利用kubectl部署postgis:17-3.5

1.離線環境CPU:Hygon C86 7285 32-core Processor 操作系統&#xff1a;麒麟操作系統 containerd&#xff1a;1.7.27 Kubernetes:1.26.12 KubeSphere:4.1.2 kubekey&#xff1a;3.1.10 Harbor:2.13.1 Postgis:17-3.52.創建并執行postgresql-headless.yaml2.1創建apiVersion: v1…

Mysql(存儲過程)

目錄 介紹 特點 存儲過程創建 系統變量(不重要) 用戶變量 局部變量 if 判斷 參數&#xff08;in, out, inout) case while repeat loop 游標和條件處理程序-handler 存儲函數 為了防止以后忘記&#xff0c;反復去看視頻浪費時間&#xff0c;特寫一篇 介紹 存儲過程…

Effective Python 第14條: 用sort方法的key參數來表示復雜的排序邏輯

一、引言&#xff1a;Python排序功能的重要性 在Python開發中&#xff0c;排序功能是一個常見的需求。無論是處理數據、優化算法&#xff0c;還是提升用戶體驗&#xff0c;排序都是不可或缺的一部分。Python的列表內置了sort方法&#xff0c;提供了靈活的排序功能。然而&#…

react+antd 可拖拽模態框組件

DraggableModal 可拖拽模態框組件使用說明 概述 DraggableModal 是一個基于 dnd-kit/core 實現的可拖拽模態框組件&#xff0c;允許用戶通過拖拽標題欄來移動模態框位置。該組件具有智能邊界檢測功能&#xff0c;確保模態框始終保持在可視區域內。 功能特性 ? 可拖拽移動&…

MySQL的基本操作及相關python代碼

下面為你介紹 MySQL 的基本操作,以及對應的 Python 代碼實現。我會先介紹 SQL 基本操作,再展示如何用 Python 連接 MySQL 并執行這些操作。 一、MySQL 基本操作(SQL 語句) 1. 連接數據庫 bash mysql -u root -p2. 創建數據庫 sql CREATE DATABASE testdb;3. 使用數據…

Armbian(斐訊N1)安裝xfce桌面以及遠程環境

安裝xfce桌面以及vncserver(遠程連接) 安裝xfce桌面 apt-get install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils ubuntu的安裝gdm3&#xff0c; apt install gdm3 debian安裝lightdm。 apt install lightdm 安裝vnc server apt-get install tightvncserver 中文字體…

【Oracle】Oracle 11g打補丁時遇到opatch apply命令無法識別

?? 1. 使用完整路徑執行命令 問題原因&#xff1a;若未將$ORACLE_HOME/OPatch加入系統PATH環境變量&#xff0c;直接輸入opatch apply會因系統無法定位命令而報錯。 解決方案&#xff1a; 改用絕對路徑執行&#xff1a; $ORACLE_HOME/OPatch/opatch apply例如&#xff1a; /u…

單例模式詳細講解

一.定義單例模式是一種創建型設計模式&#xff0c;確保一個類只有一個實例&#xff0c;并提供一個全局訪問點特點&#xff1a;1.構造函數和析構函數私有化2.禁用拷貝構造函數和賦值運算符重載&#xff08;delete&#xff09;3.利用靜態成員函數和靜態成員變量來給外界提供訪問二…

KORGym:評估大語言模型推理能力的動態游戲平臺

KORGym&#xff1a;評估大語言模型推理能力的動態游戲平臺 現有評估基準多受領域限制或 pretraining 數據影響&#xff0c;難以精準測LLMs內在推理能力。KORGym平臺應運而生&#xff0c;含50余款游戲&#xff0c;多維度評估&#xff0c;本文將深入解析其設計、框架、實驗及發現…

ISPDiffuser文章翻譯理解

ISPDiffuser: Learning RAW-to-sRGB Mappings with Texture-Aware Diffusion Models and Histogram-Guided Color Consistency翻譯 Type: Conference paper Author: Yang Ren1,4, Hai Jiang1,4, Menglong Yang1,2,?, Wei Li1,2, Shuaicheng Liu3,4,? Select: ???????…

C++線程池執行步驟分析,總結線程池流程

線程池流程總結&#xff1a;1、構造函數中創建線程&#xff0c;并添加到線程池&#xff08;構造函數返回時&#xff0c;線程自動啟動&#xff0c;并停在等待wait&#xff1a;從線程池取出一個任務處&#xff09;&#xff1b; 2、主線程中添加任務&#xff0c;到任務隊列。并用“…

Java 通過 HttpURLConnection發送 http 請求

問題&#xff1a; 在調試 kill 接口的時候&#xff0c;對方的服務用的是 Django RestFramework 框架提供的接口&#xff0c;用 python 請求時得到的內容如下&#xff1a; ? ~ python3 test.py <Response [200]> "true" // 對應的代碼是 print(response, r…

【PTA數據結構 | C語言版】列出連通集

本專欄持續輸出數據結構題目集&#xff0c;歡迎訂閱。 文章目錄題目代碼題目 給定一個有 n 個頂點和 m 條邊的無向圖&#xff0c;請用深度優先遍歷&#xff08;DFS&#xff09;和廣度優先遍歷&#xff08;BFS&#xff09;分別列出其所有的連通集。假設頂點從 0 到 n?1 編號。…