搞心態了屬於是。。。。。
先上我的
#include
using namespace std;
int n;
int s[101];
int g[101];
int h[101];
int r[101];
int c;
int total = 0;
bool up(int a,int b)
bool cmp(int a[101])
if(total != n) return 1;
else return 0;
}int print()}}
for(int v = 1;v<=n;v++)
sort(r+1,r+y+1,up);
for(int k = 1;k<=f;k++)
int kk = 0;do}
if(kk == 1) break;
}
while(next_permutation(s+1,s+n+1));
if(kk == 0) cout<
return 0;
}可惡。。。no solution的s大寫卡了我好久。。。。
深搜+特判+去重 ac搞定;
二位陣列(可以這麼寫)與深搜的碰撞 大部分時間卡在了mle和tle上 上動態陣列依舊不行 最後採用了多個函式分離操作 大量剪枝
#include
typedef long long ll ;
using namespace std;
const int n=10001;
int m,n,s,t;
int a[n],b[n],c[n],d[n],e[n],f[n],g[n],p[n],q[n];
int total = 0;
int num=1;
void find()
ll read()
while(ch>='0'&&ch<='9')
return x*f;
}void add(int x,int y,int z,int kl)
queuest;
bool if()
}
}return f[t]!=m;
}void mark()
total+=f[t]*g[t];
}bool if_d()
for(int i=1;i<=n;i++)
}printf("%d",f[v]);
return 0;
}#include
usingnamespacestd;
intmain()
if(n ==2)
if(n ==3)
if(n ==4)
if(n ==5)
if(n ==6)
if(n ==7)
if(n ==8)
if(n ==9)
if(n ==10)
if(n ==11)
if(n ==12)
return0;
}//數學要好。。。。。。。。。。。
leetcode深搜專題
二叉樹的中序非遞迴遍歷 public static void medorderunrecur node root stackstack new stack while stack.empty root null else system.out.println leetcode 98 驗證二叉搜尋樹 ...
排列組合 深搜專題複習
有n種物品,並且知道每種物品的數量。要求從中選出m件物品的排列數。例如有兩種物品a,b,並且數量都是1,從中選2件物品,則排列有 ab ba 兩種。input 每組輸入資料有兩行,第一行是二個數n,m 1 m,n 10 表示物品數,第二行有n個數,分別表示這n件物品的數量。output 對應每組資料...
廣搜和深搜
一般來說,廣搜常用於找單一的最短路線,或者是規模小的路徑搜尋,它的特點是 搜到就是最優解 而深搜用於找多個解或者是 步數 已知 好比3步就必需達到前提 的標題,它的空間效率高,然則找到的不必定是最優解,必需記實並完成全數搜尋,故一般情況下,深搜需要很是高效的剪枝 優化 像搜尋最短路徑這些的很顯著若是...