通過申請動態記憶體來解題目

2021-10-23 05:24:49 字數 2718 閱讀 1377

前言

座右銘:talk is easy,show me the code.

我們生活在幸福的時代,我們都站在巨人的肩膀上看世界

問題 2275: [藍橋杯][2023年第九屆真題]三體攻擊

時間限制: 1sec 記憶體限制: 128mb 提交: 53 解決: 0

題目描述 三體人將對地球發起攻擊。為了抵禦攻擊,地球人派出了 a × b × c 艘戰艦,在太空中排成乙個 a 層 b 行 c

列的立方體。其中,第 i 層第 j 行第 k 列的戰艦(記為戰艦 (i, j, k))的生命值為 d(i, j, k)。

三體人將會對地球發起 m 輪「立方體攻擊」,每次攻擊會對乙個小立方體中的所有戰艦都造成相同的傷害。具體地,第 t **擊用 7 個引數

lat, rat, lbt, rbt, lct, rct, ht 描述; 所有滿足

i ∈ [lat, rat],j ∈ [lbt, rbt],k ∈ [lct, rct] 的戰艦 (i, j, k) 會受到 ht

的傷害。如果乙個戰艦累計受到的總傷害超過其防禦力,那麼這個戰艦會**。

地球指揮官希望你能告訴他,第一艘**的戰艦是在哪一**擊後**的。

輸入 從標準輸入讀入資料。 第一行包括 4 個正整數 a, b, c, m; 第二行包含 a × b × c 個整數,其中第

((i − 1)×b + (j − 1)) × c + (k − 1)+1 個數為 d(i, j, k); 第 3 到第 m + 2

行中,第 (t − 2) 行包含 7 個正整數 lat, rat, lbt, rbt, lct, rct, ht。

輸出 輸出到標準輸出。 輸出第乙個**的戰艦是在哪一**擊後**的。保證一定存在這樣的戰艦。 樣例輸入

2 2 2 3

1 1 1 1 1 1 1 1

1 2 1 2 1 1 1

1 1 1 2 1 2 1

1 1 1 1 1 1 2

樣例輸出 2

**示例:

如果使用動態申請記憶體而直接使用三維陣列,想必一定不會通過。

#include

#include

intmain()

; //不行啊,太暴力了

int*

**s=

(int**

*)malloc

(a*sizeof

(int**

));for

(i=0

;i}while

(m--)}

}}}printf

("%d\n"

,ans)

;return0;

}

問題 2276: [藍橋杯][2023年第九屆真題]全球變暖

時間限制: 1sec 記憶體限制: 128mb 提交: 257 解決: 52

題目描述 你有一張某海域nxn畫素的**,".「表示海洋、」#"表示陸地,如下所示:

….##…

.##…

…##.

…####.

…###.

…其中"上下左右"四個方向上連在一起的一片陸地組成一座島嶼。例如上圖就有2座島嶼。

由於全球變暖導致了海面上公升,科學家**未來幾十年,島嶼邊緣乙個畫素的範圍會被海水淹沒。具體來說如果一塊陸地畫素與海洋相鄰(上下左右四個相鄰畫素中有海洋),它就會被淹沒。

例如上圖中的海域未來會變成如下樣子:……

………#……

…請你計算:依照科學家的**,**中有多少島嶼會被完全淹沒。

輸入 第一行包含乙個整數n。 (1 <= n <= 1000)

以下n行n列代表一張海域**。

**保證第1行、第1列、第n行、第n列的畫素都是海洋。 輸出 乙個整數表示答案。

輸出 乙個整數表示答案。 **保證第1行、第1列、第n行、第n列的畫素都是海洋。

樣例輸入7…

.##…

.##…

…##.

…####.

…###.

樣例輸出

1

解題目**:

#include

#include

intmain()

}if( i!=

0&&i!=n+1)

getchar()

;}// for(i=0;i<=n+1;i++)

// // printf("\n");

// }

//輸出

for(i=

1;i<=n;i++)}

printf

("%d\n"

,ans)

;return0;

}

遺憾的是,第一題這樣來解只通過89%(總不會是錯誤89%吧)

第二題這樣解題超時29%

由於水平有限,本部落格難免有不足,懇請各位不吝賜教!

關於動態記憶體申請的部落格

動態記憶體 malloc 動態申請記憶體 int arr int malloc n sizeof int int arr n 定義乙個n長度的陣列 如果要使用,需引用標頭檔案 需注意 1.棧的大小1m,可配 2.堆的分配的最大連續塊1.2g calloc動態申請記憶體,並將裡面的值置為0 int a...

C語言動態記憶體申請分析

1 c語言中的一切操作都是基於記憶體的 2 變數和陣列都是記憶體的別名 1 記憶體分配由編譯器在編譯期間決定 2 定義陣列的時候必須指定陣列的長度 3 陣列的長度是在編譯期間就必須確定的 1 malloc和free用於執行動態記憶體分配和釋放 2 malloc所分配的是一塊連續的記憶體 3 mall...

指向指標的指標申請動態記憶體

在 高質量c程式設計指南 中,提到了如果函式的引數是乙個指標,那麼別指望它能申請動態記憶體。如下 include include void getmemory char p,int num int main void getmemory char p,int num 最後的輸出的stu的結果是0,即...