第4章學習小結

2022-06-27 23:36:14 字數 3244 閱讀 7443

第四章講的是串,陣列和廣義表,在做題過程中,逐漸發現stl中string的強大(下乙個目標,熟悉string的函式)。

天梯賽l1-8 估值一億的ai核心**

這題也終於打出來了,心得是要盡量劃分層次,思路要清晰,嚴謹,多寫幾個判斷函式是完全沒問題的(努力習慣中...)

ac**:(原題)

#include #include 

using

namespace

std;

char map[1005

];char a[1005],b[1005],c[1005

];int alen=0,blen=0,clen=0

;bool vis[1005

];bool isbiao(char

a)bool isspace(char

a)bool isalone(char

a)bool iscan(char

a)bool iscould(char

a)void

solve_kong_big_wen()

}for(;ii)

else

if(map[i]=='

?') a[alen++]='!'

;

else

if(map[i]>='

a'&&map[i]<='

z'&&map[i]!='

i') a[alen++]=char(map[i]+32

);

else a[alen++]=map[i];

}a[alen]='\0'

;}void

solve_can()

}}

if(i+8

char m[15

]; strncpy(m,a+i,9

); m[

9]='\0'

;

if(iscould(m))

else b[blen++]=a[i];

}else b[blen++]=a[i];

}else b[blen++]=a[i];

}b[blen]='\0'

;}void

solve_i()

}else

if(b[i]=='

m'&&i+1

1]=='e'

) }

else c[clen++]=b[i];

}c[clen]='\0'

;}intmain()

return0;

}

view code

我想討論的題目是7-1 稀疏矩陣

這題沒有刪除增加,只有查詢,感覺上開乙個結構體陣列存資料 + 乙個for迴圈遍歷就能解決了,但我還是去試著琢磨一下十字鍊錶

(**網路)

上圖就是稀疏矩陣的樣子,它有每一行的頭指標,每一列的頭指標,以及n個節點;

節點的圖:

(**網路)

乙個節點代表矩陣中乙個非零數字的資訊

包括行(row),列(col),數值(value),指向右邊的指標(right),指向下面的指標(down)

下面分享我開創乙個十字鍊錶的步驟:

一:定義(節點+鍊錶)

int n,m,t;//待輸入的資訊,第二步用

定義節點:

typedef struct nodenode;

定義鍊錶:

struct crosslistm;

二:輸入稀疏矩陣的行數、列數和矩陣中非零元素的個數初始化指標

cin>>n>>m>>t;

for(int i=1;i<=n+5;++i)

for(int i=1;i<=m+5;++i)

三:輸入每乙個點的資訊

for(int k=1;k<=t;++k)

//否則,找到應該插入的位置並插入

else

//對該列處理,與行道理相同

if(m.chead[j]==null || m.chead[j]->x >i )

else }}

這樣,十字鍊錶就建好了,再寫乙個查詢函式就可以了解決問題了(簡單問題複雜化)

注意:這份**僅僅是為了做題,針對性很強,漏洞很多。寫出來主要是為了分享思想。

附上ac**:

#include #include 

#include

#include

#include

#include

using

namespace

std;

#define maxn 1000010

intn,m,t;

typedef

struct

nodenode;

struct

crosslistm;

void

create()

for(int i=1;i<=m+5;++i)

inti,j,w;

for(int k=1;k<=t;++k)

else

if(m.chead[j]==null || m.chead[j]->x >i )

else

}}void query(int

k)

else p=p->right; }}

if(flag==1

) ;

else cout<

error";

}int

main()

view code

上次部落格定下的目標沒有完成(做完線段樹專題),原因是講課好快啊都來不及做+思想理解了但**敲不出來

接下來目標是熟悉string的函式,敲出主席樹。

第4章學習小結

第四章小結 1.本章學習了串,陣列 廣義表。串是內容受限的線性表,資料元素為字元,一般通過模式匹配演算法進行對串的應用,其中kmp為其中一種效率高的演算法。多維陣列可看成是線性表的推廣,在前面學過的內容基礎上,再深挖了一些,接觸到了主行 主列兩種基本二維陣列儲存方式,還有針對特殊情況的壓縮儲存方式。...

第4章學習小結

1 12else j next j 13 14 kmp演算法的難點就在於next指標。接下來我就講講我對於next指標的個人理解 一 為什麼要next指標?因為要在模式串的各個位置上記錄這個位置之前的最長的相同前字尾的長度。二 什麼是前字尾?為了跳過不必要的重複匹配。三 如何計算最大的前字尾?見以上...

第7章學習小結

一 線性表的查詢 1 順序查詢 typedef keytype int 這個根據具體情況去定義 在這裡定義為int typedef structelemtype typedef struct sstable 查詢過程 按順序乙個乙個比對,直到找到為止 若全部對比完都沒找到,則意味著查詢失敗。設定哨兵...