演算法競賽入門經典 劉汝佳 第七章暴力

2021-08-04 10:57:40 字數 2982 閱讀 5554

0;}(1)增量構造法

#include 

#include

#include

#include

using

namespace

std;

int n,t[100],ans[100];

void solve(int cur,int tpre)

}int main()

return

0;}

(2)位向量法vis[i]=1表示選中t[i]這個數

#include 

#include

#include

#include

using

namespace

std;

int n,t[100],vis[100];

void solve(int cur)

vis[cur]=1;

solve(cur+1);

vis[cur]=0;

solve(cur+1);

}int main()

return

0;}

(3)二進位制法0~n-1的子集

#include 

#include

#include

#include

using

namespace

std;

int n;

void subset(int s)

if(flag)

cout

return

0;}

(1)困難的串

#include 

#include

#include

#include

using

namespace

std;

int l,n,cnt,ans[100];

int solve(int cur)

for(int i=0; iint flag=1;

for(int j=1;j*2

<=cur+1;j++)//迴圈判斷長度長度為j*2的字尾

if(iequal)

}if(flag)

if(!solve(cur+1)) return

0; }

return1;}

int main()

return

0;}

(2)頻寬uva 140

劉汝佳老師的原始碼

#include 

#include

#include

#include

#include

#include

#include

using

namespace

std;

/*a:fb;b:gc;d:gc;f:agh;e:hd#*/

int main()

}int p=0,q=0;

int len=strlen(input);

vector

u,v;

while(1)

p++;q++;

}// 列舉全排列

int p[10],bestp[10],pos[10],ans=n;

for(int i=0;i//i指第i個

do

if(widememcpy(bestp,p,sizeof(p));

}}while(next_permutation(p,p+n));

for(int i=0;iprintf("%c ",letter[bestp[i]]);

cout

< "

0;}

劉汝佳第七章UVA 10603

1.這個題要求的是輸出最小水量。bfs的佇列實現就是用乙個量來衡量兩個狀態的先後順序,然後根據這個先後順序來決定先遍歷哪個狀態。在這裡,需要定義乙個dist來代表到這個狀態的最小水量,然後過載運算子,最小水量越少,這個狀態優先順序越高。如果定義步數,則會找到最小步數,這個是bfs的特點決定的。即,b...

劉汝佳《演算法競賽入門經典》索引筆記

2015年4月30日 acm學習技巧 14 浮點數陷阱 18 include 22 fopen input.txt r stdin 25 ifdef 26 lld 29 大陣列在main外面宣告 34 memset a,0,sizeof a 35 count 濫用 40 linux換行符問題 41 ...

《演算法競賽 入門經典》劉汝佳第四章

象棋uva1589 題目 給定乙個棋局,黑方僅剩一將,紅方剩2 7個棋子,型別有g 帥 h 馬 r 車 c 炮 現輪黑方走,判斷黑方下完後是否為輸,輸則輸出yes,不輸則 輸出no。輸入第一行n,x,y,接下去行,每行型別 ch 座標 x,y 以0 0 0為輸 入終止。sample 輸入 5 1 5...