原创 PAT 2019 9月8號總結

第一題: 一個整數A,所有位加起來爲m,A+1的所有位數加起來爲n,m和n的最大公約數爲大於2的質數,則A稱爲永遠數。 給出m個查詢,每個查詢給出k(A的位數)和 m(A的位數和),找出可能的A,以及對應的n。 採用dfs和回溯剪枝。每一

原创 PAT a1098

目的:通過初始序列,判斷中間序列是插入排序還是堆排序。再輸出下一步 輸入: N  數字個數 兩個序列 輸出: 插入排序還是堆排序 算法: 由於答案唯一。所以,先判斷是否爲插入排序。若不是,就一定爲堆排序。 插入排序中間序列的特點。前面一部

原创 PAT a1112

目的:找出鍵盤壞掉的鍵,還原原本的輸入 輸入: K  壞的鍵重複的次數 輸入的字符串 輸出: 壞掉的鍵,按照字符串中出現的順序輸出 還原的輸入字符串 算法: 用unordered_map<char,bool> hash1存字符,遍歷字符串

原创 PAT a1118

目的:通過圖片找樹,找出有多少個鳥 輸入: N  圖片數 K  每張圖片上的鳥的個數 Q 查詢數目 輸出: 輸出有幾棵樹,幾隻鳥 對查詢判斷兩隻鳥是否屬於同一棵樹。 #include<stdio.h> #include<set> us

原创 PAT a1119

目的:根據前序和後序確定樹。判斷樹是否唯一。輸出一個可能的中序序列 輸入: N 結點數目 前序序列 後序序列 輸出: 判斷是否樹唯一 輸出一個可能的中序序列 算法: 前序和後序無法確定是因爲當根節點只存在一個子樹時,無法確定它是左子樹還是

原创 PAT a1116

目的:按照排名給獎品。 輸入: N  人數 輸出: 和人的排位有關,輸入他的獎品 算法: 用unordered_map,存名字和排名,然後計算是否爲質數 #include<stdio.h> #include<algorithm> #in

原创 PAT a1117

目的:找到E數 輸入: N  連續騎車的天數 N個每天騎行時間的序列 輸出 輸出E E爲最大的E,至少E天騎行超過E小時 算法: 要找到一個最大的時間E,在騎行超過這個時間裏面騎行的天數是超過E天的。也就是找到最小的E,騎行超過E小時的天

原创 PAT a1132

目的:測試是否是cut整數 輸入: N  <= 20   Z 整數,10<=Z<2^31 Z的位數保證是偶數個 輸出: 是cut整數,輸出Yes。 不是輸出,No. 算法: 由於兩個切割數乘積不會超過原數,所以int範圍就夠了。 用str

原创 PAT a1125

目的:一堆繩段,組成最長。 輸入: N  繩段條數 N個整數 輸出: 輸出最長的長度,向下取整。 算法: 短的先加,折半的就少,把長的留在最後。因此用vector,並且排序。 #include<stdio.h> #include<ios

原创 PAT a1137

目的:整合分數生成最終分數 輸入: P  做過在線平臺測試的學生人數 M  期中考試的人數 N   期末考試人數 所以人數不超過10000 然後是三個部分分數數據包 格式: 學生id  分數   id不超過20位的字符串 分數是非負整數,

原创 PAT a1123

目的:構建AVL樹,然後判斷是否是完全二叉樹 輸入: 一串節點序列 輸出: 層序序列 以及判斷是否是滿二叉樹  #include<stdio.h> #include<algorithm> #include<queue> using n

原创 PAT a1124

目的:抽獎 輸入: M  轉發數 N  跳躍數 S  第一個人的標號 M行,每行一個20字符的字符串 輸出: 輸出抽中的人名字 算法: 從開始的人,每隔跳躍數抽中一個,若是抽中的人已經抽中了,那就在抽這個人後面那個。如果轉發數太少,第一個

原创 PAT a1131

目的:幫別人找到去目的地的最快的路徑 輸入: N <=100  線路條數 線路格式: M  S[1] S[2] ...S[M] M  <=100   線路上站點數 S[I]  站點的標號,4位數字,0000~9999 注意: 可以有環路,

原创 PAT a1133

目的:按照要求分類,然後重新排序。類裏面順序不變。 輸入: 第一行  第一個節點的地址 N  <=100000  節點數目 K   <=1000   第二類元素的分界線[0,K] 節點的地址是一個5位的非負整數,NULL被表示爲-1 節點

原创 PAT a1126

目的:判斷是否是Eulerian Path 輸入: 每個點 每個邊 輸出: 判斷是哪種情況 算法: 用hash表統計每個點的度。如果全爲偶數,則爲Eulerian 如果有兩個點的度爲奇數,則爲semi-Eulerian 如果不是以上的情況