10月1日

来源:互联网 发布:mac os x 卸载软件 编辑:程序博客网 时间:2024/04/27 14:23
         今天十月一了,国庆快乐,这几天研究dp去了,没看数据结构,研究了几个题,首先是Corn Fields,大体意思是一个矩阵里有很多格子,每个格子有两种状态,可以放牧和不可以放牧,可以放牧用1表示,否则用0表示,在这块牧场放牛,要求两个相邻的方格不能同时放牛,即牛与牛不能相邻。问有多少种放牛方案,把每一行的状态用二进制的数表示,0代表不在这块放牛,1表示在这一块放牛。首先,每一行的状态要符合牛必须放在能放牧的方格上。其次,牛与牛之间不能相邻,这样就要求每一行中不能存在两个相邻的1。然后就是根据上一行的状态转移到当前行的状态必须符合不能有两个1在同一列的条件。最后,上一行的所有符合条件的状态的总的方案数就是当前行该状态的方案数。其次研究炮兵阵地这道题,类似于上面一道题,一个方格组成的矩阵,每个方格可以放大炮用0表示,不可以放大炮用1表示,让放最多的大炮,大炮与大炮间不会互相攻击。对于每一行放大炮的状态,只与它上面一行和上上一行的状态有关,每一行用状态压缩的表示方法,0表示不放大炮,1表示放大炮,先要满足有的地方不能放大炮,然后就是每一行中不能有两个1的距离小于2。然后就是状态表示和转移的问题了,因为是和前两行的状态有关,所以要开个三维的数组来表示状态,果当前行的状态符合前两行的约束条件,则当前行的最大值就是上一个状态的值加上当前状态中1的个数。这几天偷懒了,自我检讨一下,静不下心来学习,要好好调整一下状态了。
原创粉丝点击