表尾是指除去表頭後剩下的元素組成的表,表頭可以為表或單元素值,表尾是指除去表頭後剩下的元素組成的表(即使只剩乙個元素也視為表),可以為空表。
有乙個100*90的稀疏矩陣,非0元素有10個,設每個整型數占2位元組,則用三元組表示該矩陣時,所需的位元組數是:
每個元素要用行號,列號,元素值來表示,在用三元組表示稀疏矩陣,還要三個成員來記住,矩陣的行數列數,總的元素數,所以所需的位元組數是10*(1+1+1)*2+3*2=66。
在乙個有8個int資料的陣列中,隨機給出陣列的資料,找出最大和第二大元素一定需要進行()次比較:
比如 a b c d e f g h,通過8進4的方式,a與b比較, c與d比較.....然後再4進2,a與c比較(假設a,c比b,d大),e與g比較。再2進1,比如a與e比較(假設a,e比c,g大)選出最大的a,總共7次。
然後次大的數一定是被最大數pk下去的,所以再選b c e三個比較2次得到次大的數
aa e
a c e g (7次)
a b c d e f g h
再選 bce中最大的(2次),共9次,不過可以這個方法比較次數是少一點,但是所需要的空間大,要記下與沿途的最大值比較的數。
分析:這是乙個考最優演算法的下界問題。
選擇問題的複雜度下界,已經有證明,可參考演算法導論或屈婉玲的演算法設計與分析技術這本書。
對於選擇問題,找最大問題的下界是:n-1
找第二大問題的下界是:n+logn-2
因此,本題,n=8,代入下界公式:8+3-2 = 9。
vector erase以後,itor已經指向下乙個元素了,不應該執行itor++,否則會跳過下乙個元素
乙個有序數列,序列中的每乙個值都能夠被2或者3或者5所整除,這個序列的初始值從1開始,但是1並不在這個數列中。求第1500個值是多少:
2、3、5的最小公倍數是30。[ 1, 30]內符合條件的數有22個。如果能看出[ 31, 60]內也有22個符合條件的數,那問題就容易解決了。也就是說,這些數具有週期性,且週期為30.
第1500個數是:1500/22=68 1500%68=4。也就是說:第1500個數相當於經過了68個週期,然後再取下乙個週期內的第4個數。乙個週期內的前4個數:2,3,4,5。
故,結果為68*30=2040+5=2045
錯題整理(1)
1.charc 72 中的 72代表乙個字元,72是八進位制數,代表ascii碼字元 2.10 a 中a先進行乘法運算再自增 筆試中經常喜歡出這類運算子優先順序容易混淆的輸出問題 static關鍵字 1 函式體內static變數的作用範圍為函式體。不同於auto變數。該變數的記憶體只被分配一次。因此...
錯題整理(2)
1.在c 中,如果確定了某乙個建構函式的建立過程,在該建構函式中如果呼叫了其它過載的建構函式,它將不會執行其它建構函式的初始化列表部分 而是執行函式體 此時已經退化成普通函式了。例子說明如下 classcbook intmain cbook c cout c.m price endl 此時並不會輸出...
c錯題整理
一 1.c 2.b d 3.a 4.c 5.d 6.c 7.c a 8.b 9.d 10.c 11.a 12.c b 13.a 14.d 15.a 16.a b 17.d b 18.b c 19.d 20.b 2.以下選項中正確的 c 語言常量是 a.2.46e 1.5 b.0382 c.123 d...