七 進製轉換
1任意正整數進製間的互化
除n取餘
2實數任意正整數進製間的互化
乘n取整
3負數進製:
設計乙個程式,讀入乙個十進位制數的基數和乙個負進製數的基數,並將此十進位制數
轉換為此負 進製下的數:-r∈
八 全排列與組合的生成
1排列的生成:(1..n)
procedure solve(dep:integer);
vari:integer;
begin
if dep=n+1 then begin writeln(s);exit; end;
for i:=1 to n do
if not used[i] then begin
s:=s+chr(i+ord('0'));used[i]:=true;
solve(dep+1);
s:=copy(s,1,length(s)-1); used[i]:=false;
end;
end;
2組合的生成(1..n中選取k個數的所有方案)
procedure solve(dep,pre:integer);
vari:integer;
begin
if dep=k+1 then begin writeln(s);exit; end;
for i:=1 to n do
if (not used[i]) and (i>pre) then begin
s:=s+chr(i+ord('0'));used[i]:=true;
solve(dep+1,i);
s:=copy(s,1,length(s)-1); used[i]:=false;
end;
end;
九.查詢演算法
1折半查詢
function binsearch(k:keytype):integer;
var low,hig,mid:integer;
begin
low:=1;hig:=n;
mid:=(low+hig) div 2;
while (a[mid].key<>k) and (low<=hig) do begin
if a[mid].key>k then hig:=mid-1
else low:=mid+1;
mid:=(low+hig) div 2;
end;
if low>hig then mid:=0;
binsearch:=mid;
end;
2樹形查詢
二叉排序樹:每個結點的值都大於其左子樹任一結點的值而小於其右子樹任一結點的值。查詢
function treesrh(k:keytype):pointer;
var q:pointer;
begin
q:=root;
while (q<>nil) and (q^.key<>k) do
if kgoal then begin
move(k-1,6-now-goal);
writeln(k moved from now to goal);
h[goal,h[goal,0]+1]:=h[now,nowp]; h[now,nowp]:=0;
inc(h[goal,0]); dec(h[now,0]);
move(k-1,goal);
end;
十二、dfs框架
noip2001 數的劃分
procedure work(dep,pre,s:longint);
var j:longint;
begin
if dep=n then begin
if s>=pre then inc(r); exit;
end;
for j:=pre to s div 2 do work(dep+1,j,s-j);
end;
類似:procedure try(dep:integer);
var i:integer;
begin
if dep=k then begin
if tot>=a[dep-1] then inc(sum);
exit; end;
for i:=a[dep-1] to tot div 2 do begin
a[dep]:=i; dec(tot,i);
try(dep+1);
inc(tot,i);
end;
end;
十三、bfs框架
ioi94 房間問題
head:=1; tail:=0;
while tail=1) and (i<=l.len) then
while j
loc:=p;
end;
2.單鏈表的插入操作
procedure insert(l:linklist; i:integer; x:datatype);
var p,q:pointer;
begin
p:=loc(l,i);
new(q);
q^.data:=x;
q^.next:=p^.next;
p^.next:=q;
inc(l.len);
end;
3.單鏈表的刪除操作
procedure delete(l:linklist; i:integer);
var p,q:pointer;
begin
p:=loc(l,i-1);
q:=p^.next;
p^.next:=q^.next;
dispose(q);
dec(l.len);
end;
4.雙鏈表的插入操作(插入新結點q)
p:=loc(l,i);
new(q);
q^.data:=x;
q^.pre:=p;
q^.next:=p^.next;
p^.next:=q;
q^.next^.pre:=q;
5.雙鏈表的刪除操作
p:=loc(l,i);
p^.pre^.next:=p^.next;
p^.next^.pre:=p^.pre;
dispose(p);
其他基本操作
1.0 索引 索引是一種與表有關的結構,它的作用相當於書的目錄,可以根據目錄中的頁碼快速找到所需的內容。當表中有大量記錄時,若要對錶進行查詢,沒有索引的情況是全表搜尋 將所有記錄一一取出,和查詢條件進行一一對比,然後返回滿足條件的記錄。這樣做會消耗大量資料庫系統時間,並造成大量磁碟 i o 操作。而...
其他高階演算法
1.普里姆演算法 prim 演算法 圖論中的一種演算法,可在加權連通圖里搜尋最小生成樹。意即由此演算法搜尋到的邊子集所構成的樹中,不但包括了連通圖里的所有頂點 英語 vertex graph theory 且其所有邊的權值之和亦為最小。2 克魯斯卡爾演算法 求加權連通圖 的最小生成樹的演算法 kru...
其他常用演算法
base64 不是安全領域下的加解密演算法,只是乙個編碼演算法,通常用於把二進位制資料編碼為可寫的字元形式的資料,特別適合在 協議下的網路快速傳輸資料。utf 8 和gbk 中文的base64 編碼結果是不同的。採用 base64 編碼不僅比較簡短,同時也具有不可讀性,即所編碼的資料不會被人用肉眼所...