
状态压缩
aGoshawk
生命不息,奋斗不止!
展开
-
poj3254——Corn Fields——————【状态压缩】
/** 解题思路:首先将原图每一行当做一个二进制数,按位取反得到另一个十进制数。然后求出在所给的列的范围内的合法状态,即没有任意两个1相邻,放入数组legal中,每种合法状态对应数组的一个下标。再单独求出第一行的所有可行状态,将dp[0][i]初始化。最后求出下面的每一行的可行状态,即跟本行的上一行不冲突且在本行可行。累加结果即可求出答案。*//** 题目大意:给出M原创 2015-01-29 17:25:51 · 527 阅读 · 0 评论 -
poj1321——棋盘问题——————【状态压缩、动态规划】
/* 解题思路:首先确定各个状态值对应的二进制中有几个1。然后初始化dp[0][0]为一种解决方案,虽然不会计入最后的结果。但是却影响着下面每行的计算。只对二进制中1的个数小于等于k的状态值操作,枚举每种状态值。本行j状态值下的方案数继承上一行j状态值下的方案数,上一行中状态为j时的dp数组如果是0时,对本行的dp结果其实无影响,产生影响的是dp[i-1][j]不为0的那个。由上一行的状态原创 2015-01-30 16:15:07 · 917 阅读 · 0 评论 -
nyoj85——炮兵阵地——————【状态压缩、动态规划】
/** 结题思路:用dp[r][i][j]表示第r行r行状态为i,r-1行状态为j时的最大可部署炮兵的个数。通过求解合法状态,缩小需要遍历的状态范围。同时求出各个合法状态的二进制中1的个数,然后特殊处理首行,然后dp求解每行每种可行状态对应的可部兵的最大个数。状态转移方程dp[r][i][j]=max(dp[r][i][j],dp[r-1][j][k]+num_1[i])。*/原创 2015-01-31 13:07:24 · 559 阅读 · 0 评论 -
poj3311——Hie with the Pie——————【状态压缩、TSP旅行商问题】
/** 解题思路:首先预处理出来各个点间的最小距离,然后dp求解。定义状态dp[i][j]代表当前访问过的城市用十进制表示为i,最终停留在j城市所走的最短距离。初始化dp[1][0]=0,状态值i所表示的二进制的2的零次方为1表示城市0被已经经过,状态值代表的二进制的2的m次方为1表示城市m已经经过。*/#include#include#include#includeu原创 2015-01-31 18:51:59 · 668 阅读 · 0 评论