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...