目錄概念筆記位段的成員是int、unsigned int 、signed int 、char等整型家族。由於結構體的記憶體對齊會對空間造成一定的浪費,因此才用位段來節省部分空間。①位段②內聯inline
oj程式設計
1、排序子串行
2、倒置字串
3、源**參考位址
在32位cpu上選擇預設對齊的情況下,有如下結構體定義:
struct a;
冒號後面的數字則是該變數所佔的位數,其儲存的方式如下:
inline修飾的函式叫做內聯函式,編譯時c++編譯器會在呼叫內聯函式的地方展開,沒有函式壓棧的開銷,內聯函式提公升程式執行的效率。但是僅僅是乙個建議,如果是遞迴或者迴圈等會被忽略掉。
牛牛定義排序子串行為乙個陣列中一段連續的子串行,並且這段子序列是非遞增或者非遞減排序的。牛牛有乙個長度為n的整數陣列a,他現在有乙個任務是把陣列a分為若干段排序子串行,牛牛想知道他最少可以把這個陣列分為幾段排序子串行
解:非遞增:就是遞減或者相等,如3,3,2,1,1。非遞減:遞增或者相等,如:1,2,2,3,4,4。但是要最少分為幾個排序子串行,因此,兩種排法結合,且不重複的劃分子串行就行。
如:1 2 3 2 2 1
非遞減:1 2 3
非遞增:2 2 1
因此就會有兩個子串行
如:1 2 1 2 1 2 1
非遞減:1 2
非遞減:1 2
非遞減:1 2
非遞減:1
或者:非遞增:1
非遞增:1 2
非遞增:1 2
非遞增:1 2
都是4個子序列
因此就看自己是把遞增和遞減誰寫在前面,對於相等的數就不管。
因此只要遍歷這個陣列就行,假設陣列長為 n
設 i = 0
while(i < n)
++i;
++子串行數量
}else if(arr[i] == arr[i + 1])//這裡的等於不能直接和比較寫在一起。
else
++i;
++子串行數量}}
將一句話的單詞進行倒置,標點不倒置。比如 i like beijing. 經過函式後變為:beijing. like i
解:題目淺顯易懂。這道題的思路就是先將整個字串倒置,再將每個單詞倒置。當然仔細觀察還有另外一種思路,看兩個字串的規律就是,將輸入的字串用空格分為字串就會發現,先輸入的子串後輸出。於是就我們知道cin這個標準輸入字串時在輸入空格就截斷了,那我們就可以用它來分割空格。當然也可以選擇用棧,先進後出嘛。
倒置字串
題目描述 通過鍵盤輸入任意乙個字串序列,除空格 製表符和換行符外,可能包含其他任意字元。請編寫乙個程式,自動實現倒置字串中的各個字元的位置。如果輸入 abc 結果將是 cba 輸入 輸入字串,長度不超過為100 輸出 輸出字串 樣例輸入 abc樣例輸出 cba提示 你的程式應該從標準輸入stdin ...
倒置字串
通過鍵盤輸入任意乙個字串序列,除空格 製表符和換行符外,可能包含其他任意字元。請編寫乙個程式,自動實現倒置字串中的各個字元的位置。如果輸入 abc 結果將是 cba 解法一 stl解法 include include include using namespace std int main cout...
倒置字串
有乙個字元陣列的內容為 student a am i 請你將陣列的內容改為 i am a student 要求 不能使用庫函式。只能開闢有限個空間 空間個數和字串的長度無關 例如 i am a student 通過逆置到如下 student a am i i ma a tneduts 源 如下 in...