![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
回溯
无敌大饺子
这个作者很懒,什么都没留下…
展开
-
ZOJ 1403 Safecracker
简单的回溯搜索题,枚举每5个字母的120中组合 #include #include #include #include #include #include #include using namespace std; vectorstak,ans; int len,target; char str[15]; void backtracking(int curi){ if(sta原创 2013-04-03 21:05:38 · 600 阅读 · 0 评论 -
POJ 2488 A Knight's Journey
经典的骑士巡游问题,注意字典序最小,应该从上到下,从左到右遍历 #include #include #include using namespace std; const int maxn=30; int di[]={-1,1,-2,2,-2,2,-1,1},dj[]={-2,-2,-1,-1,1,1,2,2},n,m; bool vis[maxn][maxn]; vectorsta原创 2013-04-04 21:45:12 · 802 阅读 · 0 评论 -
POJ 1321 棋盘问题
找到第一个有#的行开始回溯就可以了 #include #include using namespace std; const int maxn=9; char board[maxn][maxn]; bool C[maxn]; int ans,n,k; void backtracking(int curi,int cnt){ if(cnt==0){ ans++; return ;原创 2013-04-05 15:40:27 · 451 阅读 · 0 评论 -
UVA 11804 - Argentina
首先按名称排序,10个选5个有252种选择,直接用回溯就可以. #include #include #include #include #include #include using namespace std; #define MAX 10 struct athlete { char name[25]; int at,df; bool operator<(const ath原创 2013-03-23 21:44:33 · 604 阅读 · 0 评论 -
UVA 487 - Boggle Blitz
回溯就可以了 #include #include #include #include #include #include using namespace std; const int MAX=21; char table[MAX][MAX]; int n; int di[]={-1,1,0,0,-1,-1,1,1}; int dj[]={0,0,-1,1,-1,1,-1,1}; v原创 2013-03-24 11:11:11 · 548 阅读 · 0 评论 -
UVA 524 - Prime Ring Problem
先初始化个到31的质数表 再回溯 #include #include #include #include using namespace std; #define MAX 17 bool isP[]={0,0,1,1,0,1,0,1,0,0,0,1,0,1,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0,1,0}; bool used[MAX]; int n; ve原创 2013-03-24 12:21:26 · 749 阅读 · 0 评论 -
UVA 574 - Sum It Up
#include #include #include #include #include #include using namespace std; #define MAX 13 vectorstak; vector >ans; int t,n,nums[MAX]; void backtraking(int curi,int sum){ if(sum==t){ vectorte原创 2013-03-24 13:12:59 · 901 阅读 · 0 评论 -
UVA 598 - Bundling Newspapers
简单回溯,小心输入输出格式. #include #include #include #include #include using namespace std; #define MAX 40 char buf[MAX]; char npName[MAX][MAX]; int curSize,n;//当前要显示的子集大小 vectorstak; void backtracking(int原创 2013-03-25 12:56:27 · 778 阅读 · 0 评论 -
ZOJ 1694 Shredding Company(简单DFS)
#include #include #include #include #include using namespace std; vectorv,stak; vector >ans; int tar,start,minv,ansSum; void dfs(int curi,int sum){ if(sum<=tar&&curi==v.size()){ if(tar-sum<mi原创 2013-04-14 10:59:37 · 1587 阅读 · 0 评论