2.2 解密回文字串——棧
將一串數字奇數字刪除,偶數字依次移動到末尾,直到只剩下乙個數字,最後將奇數字數字依次回歸,得到最終序列。
(1) 我的解法
題目要求將奇數字刪除再歸位,可理解為跳過奇數字數字,再移動偶數字數字。
#
include
intmain()
else
}getchar()
;getchar()
;return0;
}
(2) 啊哈演算法原解#
include
intmain()
,head,tail;
//初始化佇列
head=
1; //隊首元素在陣列中的位置(頭指標的位置)
tail=10;
//隊中有9個元素,尾指標指向最後乙個元素的下一位,位置為10
while
(headgetchar()
;getchar()
;return0;
}
(3)使用結構體,將元素封裝起來#
include
struct
queue
;//用於儲存元素
int tail;
//尾指標,指示隊尾元素的位置
int head;
//頭指標,用於指示隊首指標的位置
}int
main()
while
(q.headgetchar()
;getchar()
;return0;
}
棧是一後進先出的資料結構。在判斷字串是否是回文字串時,可以不用把所有字元入棧,將中點位置後的字串與中點位置前的字串一一比較,即只將中點位置前的字串入棧。
#
include
#include
intmain()
top--;}
if(top==0)
printf
("yes");
getchar()
;getchar()
;return0;
}
啊哈!演算法 棧 佇列 鍊錶
特點 管子,兩邊開口,先進先出 first in first out 佇列的三個基本元素 乙個陣列,兩個變數 include using namespace std struct queue typedef struct queue queue 將 struct queue 重新命名為 queue ...
《程式設計珠璣》第二章 「啊哈!演算法」
三個問題 1.給定乙個最多包含40億個隨機排列的32位整數的順序檔案,找出乙個不在檔案中的32位整數 在檔案中至少缺失乙個這樣的數 為什麼?在具有足夠記憶體的情況下,如何解決該問題?如果有幾個外部臨時檔案可用,但是僅有幾百位元組的記憶體,又該如何解決該問題?記憶體足夠的情況下,可以採用位圖法。即設一...
演算法 第二章 優先佇列
先介紹兩個動作方法。1.下沉 2.上浮 1.下沉 下沉 k指的是父節點 private void sink int k 2.上浮 上浮 private void swim int k 優先佇列 是一種抽象資料型別。api 見p195,最重要的操作就是 1.刪除最大元素。2.插入元素。具體實現如下 僅...