【前言】今天做了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 什...