c c 演算法刷題筆記 自測模考 2018

2021-10-03 03:35:04 字數 3829 閱讀 3203

【前言】今天做了2023年的上機真題,雖簡單,但除第一題以外其他三題並不無腦。第二道被卡住超過半小時,主要原因:對 string 的操作還不夠熟悉,簡單認知,但不能熟練靈活利用。

問題描述:

近來,跳一跳這款小遊戲風靡全國,受到不少玩家的喜愛。

簡化後的跳一跳規則如下:玩家每次從當前方塊跳到下乙個方塊,如果沒有跳到下乙個方塊上則遊戲結束。

如果跳到了方塊上,但沒有跳到方塊的中心則獲得1分;跳到方塊中心時,若上一次的得分為1分或這是本局遊戲的第一次跳躍則此次得分為2分,否則此次得分比上一次得分多兩分(即連續跳到方塊中心時,總得分將+2,+4,+6,+8…)。

現在給出乙個人跳一跳的全過程,請你求出他本局遊戲的得分(按照題目描述的規則)。

筆記此題是自己寫的比較無腦,可改進,有時間重新編輯一下

/* 輸入格式

輸入包含多個數字,用空格分隔,每個數字都是1,2,0之一,1表示此次跳躍跳到了方塊上但是沒有跳到中心,2表示此次跳躍跳到了方塊上並且跳到了方塊中心,0表示此次跳躍沒有跳到方塊上(此時遊戲結束)。

輸出格式

輸出乙個整數,為本局遊戲的得分(在本題的規則下)。

樣例輸入

1 1 2 2 2 1 1 2 2 0

樣例輸出

22 資料規模和約定

對於所有評測用例,輸入的數字不超過30個,保證0正好出現一次且為最後乙個數字。*/

//跳一跳

#include

using

namespace std;

intmain()

if(temp==1)

if(temp==2)

}return0;

}

問題描述

給出乙個字串和多行文字,在這些文字中找到字串出現的那些行。你的程式還需支援大小寫敏感選項:當選項開啟時,表示同乙個字母的大寫和小寫看作不同的字元;當選項關閉時,表示同乙個字母的大寫和小寫看作相同的字元。

筆記這是乙個簡單的字串處理的問題,可由兩種方法實現:一是使用字串有關的庫函式實現,二是kmp

還需多加練習 字串 的演算法,看完題覺得無從下手, 沒法設計對大小寫不敏感情況,最後採用,將所有字串中遇到的大寫均化為小寫,目標值target 也均化為小寫,這樣再進行比較。

/*

輸入格式

輸入的第一行包含乙個字串s,由大小寫英文本母組成。

第二行包含乙個數字,表示大小寫敏感的選項,當數字為0時表示大小寫不敏感,當數字為1時表示大小寫敏感。

第三行包含乙個整數n,表示給出的文字的行數。

接下來n行,每行包含乙個字串,字串由大小寫英文本母組成,不含空格和其他字元。

輸出格式

輸出多行,每行包含乙個字串,按出現的順序依次給出那些包含了字串s的行。  /*輸入的第一行包含乙個字串s,由大小寫英文本母組成。

第二行包含乙個數字,表示大小寫敏感的選項,當數字為0時表示大小寫不敏感,當數字為1時表示大小寫敏感。

第三行包含乙個整數n,表示給出的文字的行數。

接下來n行,每行包含乙個字串,字串由大小寫英文本母組成,不含空格和其他字元。

輸出格式

輸出多行,每行包含乙個字串,按出現的順序依次給出那些包含了字串s的行。

樣例輸入

hello15

helloworld

hihihellohihi

grepisagreattool

hello

helloisnothello

樣例輸出

helloworld

hihihellohihi

helloisnothello

樣例說明

在上面的樣例中,第四個字串雖然也是hello,但是大小寫不正確。如果將輸入的第二行改為0,則第四個字串應該輸出。

評測用例規模與約定

1<=n<=100,每個字串的長度不超過100。

*/#include

#include

using

namespace std;

string tosmall

(string s)

return s;

}int

main()

if(swt==0)

}else

if(swt==1)

}return0;

}

問題描述

在乙個定義了直角座標系的紙上,畫乙個(x1,y1)到(x2,y2)的矩形指將橫座標範圍從x1到x2,縱座標範圍從y1到y2之間的區域塗上顏色。

下圖給出了乙個畫了兩個矩形的例子。第乙個矩形是(1,1) 到(4, 4),用綠色和紫色表示。第二個矩形是(2, 3)到(6, 5),用藍色和紫色表示。圖中,一共有15個單位的面積被塗上顏色,其中紫色部分被塗了兩次,但在計算面積時只計算一次。在實際的塗色過程中,所有的矩形都塗成統一的顏色,圖中顯示不同顏色僅為說明方便。

筆記每兩個區域都有可能有重合部分,所以採用for巢狀迴圈,而只需記錄一次重合的面積,所以 下標為 i 的區域 只與 i 之後的區域比較

/*

輸入格式

輸入的第一行包含乙個整數n,表示要畫的矩形的個數。

接下來n行,每行4個非負整數,分別表示要畫的矩形的左下角的橫座標與縱座標,以及右上角的橫座標與縱座標。

輸出格式

輸出乙個整數,表示有多少個單位的面積被塗上顏色。

樣例輸入

21 1 4 4

2 3 6 5

樣例輸出

15評測用例規模與約定

1<=n<=100,0<=橫座標、縱座標<=100。

*/#include

using

namespace std;

struct areaarea[

100]

;int

main()

for(

int i=

0;i}

cout

}

問題描述

給出獲得成績的日期和成績,按成績從大到小排序,若成績相等,按日期從小到大排。

筆記讀題可知,貪心演算法的經典排序題,利用sort 和comp 可實現,其中string 是年月日,string 型別再比較大小時,如果等長,可以正常比較,否則長的那個大。所以不需要單獨再寫字串比較的函式

因為 每組資料兩個元素,優先考慮pair,用vector 陣列儲存每個pair,第乙個元素為字串,第二個為正整數,所以 pair

此題需要驗證輸入資料格式是否正確,即pair 的第乙個元素 string 型資料是否按規定年月日輸入,另寫子函式 isvalid 通過字元 『/』 前後分割年月日,來與規定範圍進行比較

/*

輸入: n; n 組資料—— string和int

其中,string 日期以『/』隔開 如 2019/1/1

輸出 n 組資料

*/#include

#include

#include

using

namespace std;

//原本擔心/會破壞string原有的比較規則,寫的字串比較函式,仔細思考得 不必寫

//bool comp1(string a,string b)

bool

comp

(pairint>a,pairint>b)

bool

isvalid

(string a)

intmain()

}sort

(v.begin()

,v.end()

,comp)

;for

(int i=

0;i)return0;

}

c c 演算法刷題筆記 經典剪枝問題

題目描述 還記得童話 賣火柴的小女孩 嗎?現在,你知道小女孩有多少根火柴,請找出一種能使用所有火柴拼成乙個正方形的方法。不能折斷火柴,可以把火柴連線起來,並且每根火柴都要用到。輸入為小女孩擁有火柴的數目,每根火柴用其長度表示。輸出即為是否能用所有的火柴拼成正方形。樣例輸入 1,1,2,2,2 輸出 ...

c c 演算法刷題筆記 洛谷闖關1 2

p1035 級數求和 p1423 小玉在游泳 p1424 小魚的航程 改進版 p1980 計數問題 前幾篇都是比較基礎的題目,仍然記錄的意義在於 把其他地方的零碎筆記騰上來 不要小看基礎,基礎和基礎加起來就會很牛批了哦 同時回顧以前的題目,看能不能瞬間捋清思路。題目描述 將1,2,9共9個數分成3組...

刷題筆記 C C 專項練習4

題目 不定項 開發c 時,經常見到如下型別的結構體定義 typedef struct list tlist t 最後一行char data 0 的作用是?a.方便管理記憶體緩衝區 b.減少記憶體碎片化 c.標識結構體結束 d.沒有作用 答案 ab 知識點 柔性陣列 解析 先來看柔性陣列,引自 1 什...