【PTA數據結構 | C語言版】關于堆的判斷

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

文章目錄

    • 題目
    • 代碼

題目

將一系列給定數字順序插入一個初始為空的最小堆。隨后判斷一系列相關命題是否為真。命題分下列幾種:

  • x is the root:x是根結點;
  • x and y are siblings:x和y是兄弟結點;
  • x is the parent of y:x是y的父結點;
  • x is a child of y:x是y的一個子結點。

輸入格式:
每組測試第 1 行包含 2 個正整數 n(≤ 1000)和 m(≤ 20),分別是插入元素的個數、以及需要判斷的命題數。下一行給出區間 [?10000,10000] 內的 n 個要被插入一個初始為空的最小堆的整數。之后 m 行,每行給出一個命題。題目保證命題中的結點鍵值都是存在的。

輸出格式:
對輸入的每個命題,如果其為真,則在一行中輸出 T,否則輸出 F。

輸入樣例:
5 4
46 23 26 24 10
24 is the root
26 and 23 are siblings
46 is the parent of 23
23 is a child of 10

輸出樣例:
F
T
F
T

題目引用自團體程序設計天梯賽真題(2016年)。

代碼

#include <stdio.h>
#include <stdlib.h>
#include <string.h>#define MAXN 1001
#define INF 0x7FFFFFFFint h[MAXN], size;
int pos[20001];  // 記錄每個值在堆中的位置,值范圍[-10000,10000],映射到[0,20000]// 初始化堆
void Create() {size = 0;h[0] = -INF;  // 哨兵,小于所有可能的元素值memset(pos, 0, sizeof(pos));  // 初始化位置數組
}// 插入元素到最小堆
void Insert(int x) {int i;for (i = ++size; h[i/2] > x; i /= 2) {h[i] = h[i/2];  // 上濾pos[h[i] + 10000] = i;  // 更新位置}h[i] = x;pos[x + 10000] = i;  // 記錄新元素的位置
}// 判斷命題
void Judge(char *statement) {int x, y;char op1[20], op2[20], op3[20];// 解析命題if (strstr(statement, "is the root")) {// 情況1: x is the rootsscanf(statement, "%d is the root", &x);printf("%c\n", (h[1] == x) ? 'T' : 'F');} else if (strstr(statement, "and") && strstr(statement, "are siblings")) {// 情況2: x and y are siblingssscanf(statement, "%d and %d are siblings", &x, &y);int posX = pos[x + 10000];int posY = pos[y + 10000];printf("%c\n", (posX/2 == posY/2) ? 'T' : 'F');} else if (strstr(statement, "is the parent of")) {// 情況3: x is the parent of ysscanf(statement, "%d is the parent of %d", &x, &y);int posX = pos[x + 10000];int posY = pos[y + 10000];printf("%c\n", (posY/2 == posX) ? 'T' : 'F');} else if (strstr(statement, "is a child of")) {// 情況4: x is a child of ysscanf(statement, "%d is a child of %d", &x, &y);int posX = pos[x + 10000];int posY = pos[y + 10000];printf("%c\n", (posX/2 == posY) ? 'T' : 'F');}
}int main() {int n, m, i, x;char statement[100];// 讀取輸入scanf("%d %d", &n, &m);// 構建最小堆Create();for (i = 0; i < n; i++) {scanf("%d", &x);Insert(x);}// 處理命題getchar();  // 消耗掉scanf后的換行符for (i = 0; i < m; i++) {fgets(statement, sizeof(statement), stdin);statement[strcspn(statement, "\n")] = 0;  // 去掉換行符Judge(statement);}return 0;
}    

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

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

相關文章

[CH582M入門第十步]藍牙從機

前言 學習目標: 1、初步了解BLE協議 2、BLE從機代碼解析 3、使用手機藍牙軟件控制CH582M從機LED亮滅一、藍牙介紹 藍牙(Bluetooth)是一種短距離無線通信技術,主要用于設備之間的數據傳輸和通信。它由愛立信(Ericsson)于1994年提出,現由藍牙技術聯盟(Bluetooth SIG)維…

力扣(LeetCode) ——輪轉數組(C語言)

題目&#xff1a;輪轉數組 給定一個整數數組 nums&#xff0c;將數組中的元素向右輪轉 k 個位置&#xff0c;其中 k 是非負數。 示例1&#xff1a; 輸入&#xff1a; nums [1,2,3,4,5,6,7]&#xff0c;k 3 輸出&#xff1a; [5,6,7,1,2,3,4] 解釋&#xff1a; 向右輪轉 1 步:…

Rocky9部署Zabbix7(小白的“升級打怪”成長之路)

目錄 一、關閉防火墻和SElinux和配置安裝源 二、zabbxi服務器配置 1、安裝Zabbix server&#xff0c;Web前端&#xff0c;agent &#xff0c;mysql-server 2、配置mysql數據庫 3、為Zabbix server配置數據庫 4、啟動對應服務 三、登錄zabbix 四、客戶端部署 五、解決中…

python安裝package和pycharm更改環境變量

安裝numpy包 1、找到對應python版本的numpy包的版本 NumPy - News確認適配python版本的numpy&#xff0c;我安裝 的python是3.11所以安裝的numpy是2.2.0 2、修改pip安裝的鏡像源 1、全局修改&#xff1a; pip config set global.index-url https://pypi.tuna.tsinghua.edu.c…

Redis中的setnx命令為什么是原子性的

Redis的SETNX命令是一個原子性操作&#xff0c;這得益于其單線程架構的特性。Redis采用單線程模型&#xff0c;所有命令都在主線程中順序執行&#xff0c;確保每個操作都具有原子性。執行SETNX時&#xff0c;Redis會首先檢查指定key是否存在&#xff1a;若不存在則設置值并返回…

深入解析Hadoop中的EditLog與FsImage持久化設計及Checkpoint機制

HDFS元數據管理概述在HDFS&#xff08;Hadoop Distributed File System&#xff09;的架構中&#xff0c;元數據管理是保證系統可靠性和性能的核心環節。NameNode作為HDFS的主節點&#xff0c;負責維護整個文件系統的命名空間和文件到數據塊的映射關系。這些元數據的高效管理直…

MFC類Qt的自動布局框架

由于作者習慣使用Qt&#xff0c;習慣了其框架下的水平和垂直布局。但在使用MFC時&#xff0c;卻發現并沒有十分好用的布局框架&#xff0c;檢索了部分資料&#xff0c;發現要么不提供源碼&#xff0c;要么方案不理想。搜索了很多資料&#xff0c;最終發現一個可用方案&#xff…

認識Transformer架構

一.前言前面我們介紹了RNN相關系列的模型&#xff0c;在當今大模型時代大家認識一下就好了&#xff0c;而本章節我們是要來介紹一下重中之重的Transformer模型&#xff0c;本章節就來介紹一下他的架構&#xff0c;了解Transformer模型的作?以及了解Transformer總體架構圖中各個…

Python學習之存數據

在得到了對應的數據之后可以考慮用文件或者數據庫的方式把內容持久化下來方便之后的分析&#xff0c;此時可以使用pymongo庫&#xff0c;寥寥幾行代碼&#xff0c;數據就已經很好地存儲下來。&#xff08;此處可參考我們之前發的文章)在 Python 中引入&#xff1a;import pymon…

PointLLM - ECCV 2024 Best Paper Candidate

https://github.com/OpenRobotLab/PointLLM PointLLM: Empowering Large Language Models to Understand Point Clouds 核心問題 對比兩種讓大型語言模型&#xff08;LLM&#xff09;“看懂”三維世界的方法 間接方法&#xff1a;通過2D圖像進行猜測。 這是目前比較常見但充…

前端-CSS-day6

目錄 1、相對定位 2、絕對定位 3、絕對定位-居中 4、固定定位 5、堆疊順序 6、CSS精靈-基本使用 7、案例-京東服務 8、字體圖標-體驗 9、使用字體圖標 10、垂直對齊方式 11、過渡 12、透明度 13、光標類型 14、綜合案例-輪播圖 1、相對定位 <!DOCTYPE html>…

在離線 Ubuntu 22.04機器上運行 ddkj_portainer-cn 鏡像 其他相關操作也可以復刻 docker

以下有免費的4090云主機提供ubuntu22.04系統的其他入門實踐操作 地址&#xff1a;星宇科技 | GPU服務器 高性能云主機 云服務器-登錄 相關兌換碼星宇社區---4090算力卡免費體驗、共享開發社區-CSDN博客 兌換碼要是過期了&#xff0c;可以私信我獲取最新兌換碼&#xff01;&a…

數據結構系列之二叉搜索樹

前言 這是我數據結構系列的第一篇&#xff0c;其余C語言模擬的數據結構均會在開學之后跟隨老師上課而更新&#xff08;雖然我已經寫完了&#xff09;&#xff0c;更新這塊主要是因為要由二叉搜索樹講到AVL樹再講到紅黑樹&#xff0c;因為map和set的底層是紅黑樹&#xff0c;就…

系統架構師:軟件工程-思維導圖

軟件工程的定義??軟件工程??是一門系統性、規范化的工程學科&#xff0c;它將工程化的方法、工具和技術應用于軟件的開發、運行與維護全生命周期&#xff0c;旨在解決軟件復雜度帶來的質量、成本和效率問題。其核心目標是通過結構化方法與技術實踐&#xff0c;確保軟件系統…

Django 入門詳解:從零開始構建你的第一個 Web 應用

Django 是一個高級的 Python Web 框架&#xff0c;鼓勵快速開發和干凈、實用的設計。它遵循“不要重復造輪子&#xff08;Dont Repeat Yourself, DRY&#xff09;”的原則&#xff0c;內置了諸如用戶認證、內容管理、表單處理等常見功能&#xff0c;非常適合構建內容驅動的網站…

[3-02-02].第04節:開發應用 - RequestMapping注解的屬性2

SpringMVC學習大綱 注解的源碼&#xff1a; 三、注解的params屬性 3.1.params屬性的理解&#xff1a; params屬性用來通過設置請求參數來映射請求。對于RequestMapping注解來說&#xff1a; params屬性也是一個數組&#xff0c;不過要求請求參數必須和params數組中要求的所有…

layui表格多選及選中

多選獲取選中數據//獲取選中行數據 var tbData table.cache["tablist2"]; var chkDatas tbData.filter(s > s.LAY_CHECKED true); if (vm.isEmpty(chkDatas) || chkDatas.length 0) {os.error("未選中數據&#xff01;");return; }單選選中樣式及數…

卡爾曼濾波數據融合

狀態向量&#xff1a;位置和速度 [x, y, vx, vy]預測階段&#xff1a;用加速度估算速度和位置&#xff08;IMU數據&#xff09;更新階段&#xff1a;用 GPS 位置修正漂移&#xff08;每隔一定時間才來一次&#xff09;import numpy as np# 時間步長&#xff08;秒&#xff09; …

Qwen3-8B 的 TTFT 性能分析:16K 與 32K 輸入 Prompt 的推算公式與底層原理詳解

一、模型概述與上下文支持能力Qwen3-8B 是通義實驗室推出的 80 億參數大語言模型&#xff0c;支持 32,768 token 的上下文長度 。其核心優化點包括&#xff1a;FP8 量化技術&#xff1a;通過將權重從 32-bit 壓縮至 8-bit&#xff0c;顯著降低顯存占用并提升推理效率&#xff0…

【Spring Cloud Gateway 實戰系列】基礎篇:路由、斷言、過濾器、負載均衡深度解析

一、引言在微服務架構中&#xff0c;API網關是流量的統一入口&#xff0c;承擔著路由轉發、流量管控、安全防護等核心職責。Spring Cloud Gateway作為Spring官方推薦的第二代網關&#xff0c;基于Spring 5.0、Spring Boot 2.0和Project Reactor構建&#xff0c;提供了高性能的響…