信息學奧賽初賽天天練-41-CSP-J2021基礎題-n個數取最大、樹的邊數、遞歸、遞推、深度優先搜索應用

PDF文檔公眾號回復關鍵字:20240701

在這里插入圖片描述

2021 CSP-J 選擇題

單項選擇題(共15題,每題2分,共計30分:每題有且僅有一個正確選項)

4.以比較作為基本運算,在N個數中找出最大數,最壞情況下所需要的最少比較次數為

A. N^2

B. N

C. N-1

D. N+1

6.對于有n個頂點、m條邊的無向連通圖(m>n),需要刪掉( )條邊才能使其成為一棵樹

A. n-1

B. m-n

C. m-n-1

D. m-n+1

12.由 1,1,2,2,3這五個數字組成不同的三位數有( )種

A. 18

B. 15

C. 12

D. 24

13.考慮如下遞歸算法

solve(n)if n<=1 return 1 else if n>=5 return n*solve(n-2)else return n*solve(n-1)

則調用solve(7)得到的返回結果為( )

A. 105

B. 840

C. 210

D. 420

14.以a為起點,對右邊的無向圖進行深度優先遍歷,則b、c、d、e四個點中有可能作為最后一個遍歷的點的個數為( )

A. 1

B. 2

C. 3

D. 4

2 相關知識點

1) n個數取最大

3個數取最大,需比較2次

#include<bits/stdc++.h>
using namespace std;
/*3個數取最大 比較2次 
*/ 
int main(){int a,b,c ;scanf("%d%d%d",&a,&b,&c) ;if(b > a)a = b ;if(c > a)a = c ;printf("%d",a) ;return 0;
}
/*輸入 1 2 3輸出 3輸入 9 5 10輸出 10 
*/ 

n個數取最大,需比較n-1次

#include<bits/stdc++.h>
using namespace std;
/*n數進行比較,循環1~n-1,進行n-1次循環 
*/ 
int  n,a[10000];
int main(){scanf("%d",&n);for(int i=0;i<n;i++){scanf("%d",&a[i]);}for(int i=1;i<n;i++){if(a[0]<a[i]){a[0]=a[i];}}printf("%d",a[0]);return 0;
}
/*輸入 4 5 9 10 8輸出 10輸入 3 9 5 10輸出 10 
*/ 

2) 樹的邊數

樹的邊數是指樹中所有邊的數量。在非空樹中,邊的數量等于結點數量減1

3) 枚舉算法

枚舉算法是一種通過列舉所有可能情況來求解問題的策略。它通常適用于問題規模較小且解空間明確、有限的情況。枚舉算法的關鍵在于如何有效地遍歷解空間,并在遍歷過程中判斷每個候選解是否滿足問題的要求

枚舉算法一般需要按一定規則進行分類,避免重復枚舉或遺漏的情況

4) 遞歸、遞推

遞歸

遞歸是一種解決問題的方法,它通過將問題分解為更小的子問題來解決。

一個遞歸函數會在其定義中直接或間接地調用自身

遞歸通常包括兩個部分:基本情況(Base case)和遞歸步驟(Recursive step)。

基本情況是指當問題規模變得足夠小時,可以直接得到解決方案的情況。

遞推

遞推是一種描述序列中項與項之間關系的方法。遞推關系通常用于定義具有某種規律性的數列,如斐波那契數列

遞推關系可以用一個公式或方程來表示,該公式或方程描述了序列中的每一項如何由前一項(或前幾項)計算得出

遞歸和遞推區別

遞歸是一種解決問題的方法,通過將問題分解為更小的子問題來解決,自上而下分解,通常會出現多次重復計算問題

遞推是一種描述序列中項與項之間關系的方法,自底而上計算,避免重復計算

通過斐波那契數列演示區別

遞歸f(3)重復計算3次,如果數更大重復更多

遞推計算是從最底層計算,計算上一層時使用前面的計算結果,所以f(3)只計算1次

5) 深度優先搜索

從某個特定頂點開始,盡可能深地搜索樹的分支,直到達到葉子節點,然后回溯到前一個節點,繼續搜索下一個分支,實現DFS時,通常使用堆棧數據結構來實現

3 思路分析

4.以比較作為基本運算,在N個數中找出最大數,最壞情況下所需要的最少比較次數為( C )

A. N^2

B. N

C. N-1

D. N+1

分析

比較作為基本運算,用第1個數做基準數,和第2個比較,然后保留最大的,逐一和后面的數進行比較

1和2,2和3,3和4,… n-1和n

最多為n-1次

6.對于有n個頂點、m條邊的無向連通圖(m>n),需要刪掉( D )條邊才能使其成為一棵樹

A. n-1

B. m-n

C. m-n-1

D. m-n+1

分析

n個節點的樹,有n-1條邊

無向圖有m條邊,需要變成n-1條邊

應刪掉m-(n-1)=m-n+1

所以選D

12.由 1,1,2,2,3這五個數字組成不同的三位數有( A )種

A. 18

B. 15

C. 12

D. 24

分析

分類枚舉

1有1 2 3這3個不同數字組成的3位數個數有A(3,3)=3 * 2 *1=6種

2有1 1 2 這3個數字組成的3位數 112 121 211 這3種

3有1 2 2 這3個數字組成的3位數 122 212 221 這3種

4有1 1 3 這3個數字組成的3位數 112 131 311 這3種

5有2 2 3 這3個數字組成的3位數 223 232 322 這3種

上述分5類枚舉,根據加法原理

6+3+3+3+3=18

13.考慮如下遞歸算法

solve(n)if n<=1 return 1 else if n>=5 return n*solve(n-2)else return n*solve(n-1)

則調用solve(7)得到的返回結果為( C )

A. 105

B. 840

C. 210

D. 420

分析

遞歸從大到小計算會出現一些重復計算,可以從小到大遞推得到solve(7)的值
solve(1)=1
solve(2)=n * solve(n-1)=2* solve(1)=2*1=2
solve(3)=n * solve(n-1)=3* solve(2)=3*2=6
solve(4)=n * solve(n-1)=4* solve(3)=4*6=24
solve(5)=n * solve(n-2)=5* solve(3)=5*6=30
solve(6)=n * solve(n-2)=6* solve(4)=6*24=144
solve(7)=n * solve(n-2)=7* solve(5)=7*30=210

14.以a為起點,對右邊的無向圖進行深度優先遍歷,則b、c、d、e四個點中有可能作為最后一個遍歷的點的個數為( B )

A. 1

B. 2

C. 3

D. 4

分析

從a點出發沿著一個分支節點盡可能深的搜索樹的分支,直到達到葉子節點,然后回溯到前一個節點,繼續搜索下一個分支
1 從a出發沿bdce一個分支搜索完所有節點,最后節點為e
2 從a出發沿ce搜索到葉子節點,回溯到c沿db搜結束,最后節點為b
深度優先搜索只有上述2種情況,可能作為最后節點的為e和b這2個節點
具體如下圖

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

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

相關文章

我在中東做MCN,月賺10萬美金

圖片&#xff5c;Photo by Ben Koorengevel on Unsplash ©自象限原創 作者丨程心 在迪拜購物中心和世界最高建筑哈利法塔旁的主街上&#xff0c;徐晉已經“蹲”了三個小時&#xff0c;每當遇到穿著時髦的年輕男女&#xff0c;他都會上前詢問&#xff0c;有沒有意愿成為…

【計算機網絡】常見的網絡通信協議

目錄 1. TCP/IP協議 2. HTTP協議 3. FTP協議 4. SMTP協議 5. POP3協議 6. IMAP協議 7. DNS協議 8. DHCP協議 9. SSH協議 10. SSL/TLS協議 11. SNMP協議 12. NTP協議 13. VoIP協議 14. WebSocket協議 15. BGP協議 16. OSPF協議 17. RIP協議 18. ICMP協議 1…

網頁自動化測試開發中記錄pytest

1切換cmd文件目錄C:\Users\14600>D: D:\>cd D:\worksoftware D:\worksoftware>2單個py文件打包成.exe文件1.pyinstaller -F -c (項目主文件)test_01shouye.py 該路徑下存在文件名&#xff0c;主項目文件 test_01shouye.py 2.執行spec文件&#xff1a; pyinstaller -F …

C語言部分復習筆記

1. 指針和數組 數組指針 和 指針數組 int* p1[10]; // 指針數組int (*p2)[10]; // 數組指針 因為 [] 的優先級比 * 高&#xff0c;p先和 [] 結合說明p是一個數組&#xff0c;p先和*結合說明p是一個指針 括號保證p先和*結合&#xff0c;說明p是一個指針變量&#xff0c;然后指…

Web2Code :網頁理解和代碼生成能力的評估框架

多模態大型語言模型&#xff08;MLLMs&#xff09;在過去幾年中取得了爆炸性的增長。利用大型語言模型&#xff08;LLMs&#xff09;中豐富的常識知識&#xff0c;MLLMs在處理和推理各種模態&#xff08;如圖像、視頻和音頻&#xff09;方面表現出色&#xff0c;涵蓋了識別、推…

系統中非功能性需求的思考

概要 設計系統時不僅要考慮功能性需求&#xff0c;還要考慮一些非功能性需求&#xff0c;比如&#xff1a; 擴展性可靠性和冗余安全和隱私服務依賴SLA要求 下面對這5項需要考慮的事項做個簡單的說明 1. 可擴展性 數據量增長如何擴展&#xff1f; 流量增長如何擴展&#xf…

【LLM教程-llama】如何Fine Tuning大語言模型?

今天給大家帶來了一篇超級詳細的教程,手把手教你如何對大語言模型進行微調(Fine Tuning)&#xff01;&#xff08;代碼和詳細解釋放在后文&#xff09; 目錄 大語言模型進行微調(Fine Tuning)需要哪些步驟&#xff1f; 大語言模型進行微調(Fine Tuning)訓練過程及代碼 大語言…

VuePress介紹

從本文開始&#xff0c;動手搭建自己的博客&#xff01;希望讀者能跟著一起動手&#xff0c;這樣才能真正掌握。 ? VuePress 是什么 VuePress 是由 Vue 作者帶領團隊開發的&#xff0c;非常火&#xff0c;使用的人很多&#xff1b;Vue 框架官網也是用了 VuePress 搭建的。即…

000.二分查找算法題解目錄

000.二分查找算法題解目錄 69. x 的平方根&#xff08;簡單&#xff09;

4PCS點云配準算法實現

4PCS點云配準算法的C實現如下&#xff1a; #include <iostream> #include <pcl/io/pcd_io.h> #include <pcl/point_types.h> #include <pcl/common/common.h> #include <pcl/common/distances.h> #include <pcl/common/transforms.h> #in…

唯一ID:UUID 介紹與 google/uuid 庫生成 UUID

UUID 即通用唯一識別碼&#xff0c;是一種用于計算機系統中以確保全局唯一性的標識符。其標準定義于 RFC 4122 文檔中。標準形式包含 32 個 16 進制數字&#xff0c;以連字符切割為五組&#xff0c;格式為 8-4-4-4-12&#xff0c;總共 36 個字符。&#xff08;形如, d169aa7f-4…

php 通過vendor文件 生成還原最新的composer.json

起因&#xff1a;因為歷史原因&#xff0c;在本項目中composer.json基本算廢了&#xff0c;沒法直接使用composer管理擴展&#xff0c;今天嘗試修復一下composer.json。 歷史文件&#xff0c;可以看出來已經很久沒有維護了&#xff0c;我們主要是恢復require的信息 {"na…

K8s節點維護流程

用途 用于下線異常節點、集群縮容等 操作步驟 1. 查看節點名稱 先確認節點的名稱 kubectl get node -o wide2. 設置節點不可調度 設置節點不可調度狀態&#xff0c;禁止新的pod調度到該節點上 kubectl cordon ${node_name}3. 剔除節點上運行的pod&#xff08;生產環境慎…

Spring Boot中集成Redis實現緩存功能

Spring Boot中集成Redis實現緩存功能 大家好&#xff0c;我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編&#xff0c;也是冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01;今天我們將深入探討如何在Spring Boot應用程序中集成Redis&#xff0c;實現…

AP無法上線原因分析及排障

一、AP未分配到IP地址 如果遇到AP無法上線問題&#xff0c;可以檢查下AP是否分配到IP地址。AP獲取IP地址有兩種方式&#xff1a;靜態方式&#xff1a;登錄到AP設備&#xff0c;手工配置IP地址&#xff0c;該方式操作起來比較麻煩&#xff0c;不推薦使用&#xff1b;DHCP方式&am…

基于CNN的股票預測方法【卷積神經網絡】

基于機器學習方法的股票預測系列文章目錄 一、基于強化學習DQN的股票預測【股票交易】 二、基于CNN的股票預測方法【卷積神經網絡】 文章目錄 基于機器學習方法的股票預測系列文章目錄一、CNN建模原理二、模型搭建三、模型參數的選擇&#xff08;1&#xff09;探究window_size…

下代iPhone或回歸可拆卸電池,蘋果這操作把我看傻了

剛度過一個愉快的周末&#xff0c;蘋果又雙叒叕攤上事兒了。 iPhone13 系列被曝扎堆電池鼓包了。 早在去年&#xff0c;就有 iPhone13 和 iPhone14 用戶反饋過類似的問題&#xff0c;表示在手機僅僅使用了一年多的時間就出現了電池鼓包的情況&#xff0c;而且還把屏幕給撐起來了…

舞會無領導:一種樹形動態規劃的視角

沒有上司的舞會 Ural 大學有 &#x1d441; 名職員&#xff0c;編號為1~&#x1d441;。 他們的關系就像一棵以校長為根的樹&#xff0c;父節點就是子節點的直接上司。 每個職員有一個快樂指數&#xff0c;用整數 &#x1d43b;&#x1d456; 給出&#xff0c;其中1≤&…

校園卡手機卡怎么注銷?

校園手機卡的注銷流程可以根據不同的運營商和具體情況有所不同&#xff0c;但一般來說&#xff0c;以下是注銷校園手機卡的幾種常見方式&#xff0c;我將以分點的方式詳細解釋&#xff1a; 一、線上注銷&#xff08;通過手機APP或官方網站&#xff09; 下載并打開對應運營商的…

C++ 指針介紹

指針是C編程語言中的一個強大且重要的特性。它允許程序員直接操作內存地址&#xff0c;從而提供了對低級別內存的訪問和控制。雖然指針在使用時可能比較復雜且容易出錯&#xff0c;但它們在提高程序效率和靈活性方面有著不可替代的作用。本文將介紹C指針的基本概念、用法及其應…