鍊錶寫法:新增加乙個頭結點來使插入操作統一。
1 #include 2 #include 3 #include 4using
namespace
std;56
const
int n = 100001;7
char
text[n];
8char
str[n];
9int
next[n];
10int
cur, last, bl;
1112
intmain ()
1326
else
if ( text[i] == ']'
)2730else
3140 cur =ncur;41}
42}43for ( int i = next[0]; i != -1; i =next[i] )
4447 putchar('\n'
);48}49
return0;
50 }
分析了一下感覺塊鏈也可以過,就套模板試了一下,果然沒有讓我失望,看來我寫的塊鏈還是不錯的,哈哈。
塊鏈寫法:
1 #include 2 #include 3 #include 4using
namespace
std;56
const
int m = 100001;7
const
int n = 500;8
char
text[m];
9char
b[n][n];
10int
sz[n];
11int
next[n];
12int
ps, bl;
1314
void
init()
1521
22void spilt( int
cur )
2331 sz[cur] = sz[cur] / 2;32
}3334void insert( int pos, char
val )
3542
if ( p < pos + 1)43
46else
4754 b[cur][pos] =val;
55 sz[cur]++;56}
57if ( sz[cur] >ps ) spilt(cur);58}
5960
intmain ()
6172
else
if ( text[i] == ']'
)7376else
7781}82
for ( int i = 0; i != -1; i =next[i] )
8388
}89 putchar('\n'
);90}91
return0;
92 }
UVA 11988 鍊錶
之前遇到字典樹什麼的要不就用指標鍊錶,要不直接上list。陣列鍊錶主要思想和指標差不多。指標是用 next記錄下乙個的位址然後形成鏈。陣列本身開闢空間時便是乙個位址所以也可以達到這點。仔細分析一下陣列a的下標再不斷增大,但是記錄的資料卻在更新。所以可以大致寫出 int next 11 int now...
UVa11988 鍊錶簡單應用
這題嘗試了兩種方法,一是書上說的用陣列來實現鍊錶相關操作,一種是利用指標形式的鍊錶實現 1.使用字元陣列c儲存一行中每個字元的值 2.使用陣列next儲存下乙個字元的位置,可以看成c i 和next i 共同構成鍊錶中的乙個結點 所以next 0 c 0 對應的是頭節點 3.設當前字元的上個字元所在...
UVA 11988 悲劇文字 靜態鍊錶
你有乙個破損的鍵盤。鍵盤上的所有鍵都可以正常工作,但有時home鍵或者end鍵會自 動按下。你並不知道鍵盤存在這一問題,而是專心地打稿子,甚至連顯示器都沒開啟。當你 開啟顯示器之後,展現在你面前的是一段悲劇的文字。你的任務是在開啟顯示器之前計算出 這段悲劇文字。輸入包含多組資料。每組資料佔一行,包含...