- 博客(5)
- 收藏
- 关注
原创 2021-01-10
8数码问题题意:在3×3的棋盘上,摆有八个棋子,每个棋子上标有1至8的某一数字。棋盘中留有一个空格,空格用0来表示。空格周围的棋子可以移到空格中。要求解的问题是:给出一种初始布局(初始状态)和目标布局,找到一种最少步骤的移动方法,实现从初始布局到目标布局的转变。基本的框架不难确定,这道题目就是一个状态空间搜索的题目。运用基本的BFS就可以搞定。把当前已经造成的局面看成一个节点,然后往下扩展就行了。但是这道问题的关键在于如何去判重。除了可以用集合外,我们可以把每一个状态进行编码方便我们去管理。那问
2021-01-10 15:29:05 98 1
原创 2021-01-07
uva1354 mobile computing紫书上面枚举的类型说的是有集合与排列。其实任何问题都可以归结为这两类。这道题实际上是枚举二叉树二叉树的枚举方法实际上就是子集的枚举做到这一点就可以合理的枚举了但由于我的基础不够,我的问题还有以下几个方面:树形结构用什么表示?图中我们用动态数组来表示,那么我们也可以用动态数组来表示二叉树结构。但是每个二叉树应该保存的是最左端的距离与最右端的距离表示,所以就有了如下结构。枚举的基本框架不太确定。这也许有可能是因为我并不太了解生成测试法与回溯法的基
2021-01-07 20:04:38 87
原创 2021-01-07
UVA140的剪枝部分第一次的代码:void dfs(int cur,int b_low,int ans){ if(cur++==n){ if(ans<b_low)b_low=ans; return; } for(int i=0;i<n;i++){ int ok=1; for(int j=0;j<cur;i++)if(S[j]==i){ok=0;break;} if(ok){ S[cur]=i;pos[S[cur]]=cur; if(n-cur&g
2021-01-07 14:40:04 61
原创 1007 Maximum Subsequence Sum
1007 1007 Maximum Subsequence Sum题目链接:点击进入大意 :求最大连续子列和思路:1.分治法 把具体区间分为长度相等的两块,那么答案很显然是以下3种情况:左边的最大序列和右边的最大序列和横跨左右两个区间的最大序列和具体代码如下:#include<bits/stdc++.h>#define maxn 1000000using namespace std;int n;int a[maxn];int sx[
2021-01-04 18:25:45 73
原创 2021-01-04
1003_emergency思路:最短路计数和一些特征值记录。属于dijkstra模板题目考虑要点:如何记录最短路的条数和特征值。过程:1.考虑如何存储数据?2.如何记录最短路的条数,特征值?3.与理想路径的关系。4.如果打印路径怎样去考虑题目传送门.#include<bits/stdc++.h>#define maxn 10000using namespace std;struct edge{int cost;int to;};vector<edge>
2021-01-04 15:27:29 80
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人