博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[集合DP] UVA 10651 Pebble Solitaire
阅读量:5161 次
发布时间:2019-06-13

本文共 1062 字,大约阅读时间需要 3 分钟。

根据题目描述,每次变换都减少了一个石子,所以只要求出初始状态最多可以变换多少次,用初始状态石子数目减去这个变换次数就得到最后剩余最少的石子的数目;

最多有12位,用一个 int 表示状态,状态的转移可以用位运算实现。

1 /* 2     UVA 10651 - Pebble Solitaire 3 */ 4 # include 
5 # include
6 7 char s[20]; 8 int f[5000]; 9 10 bool move(int &x, int i, char d)11 {12 int t = (x>>(i-2))&0x7;13 if (d)14 {15 if (t == 0x6)16 {17 x&=~(1<
y ? x:y;40 }41 42 int dp(int cur)43 {44 int &ans = f[cur];45 if (ans >= 0) return ans;46 ans = 0;47 int nst = cur;48 for (int i = 11; i > 1; --i) if (move(nst, i, 0)) // oo-49 {50 ans = max(dp(nst)+1, ans);51 nst = cur;52 }53 nst = cur;54 for (int i = 11; i > 1; --i) if (move(nst, i, 1)) // -oo55 {56 ans = max(dp(nst)+1, ans);57 nst = cur;58 }59 60 return ans;61 }62 63 int trans(char *s)64 {65 int ret = 0;66 for (int i = 0; i < 12; ++i)67 if (s[i] == 'o') ret |= 1<

这算是状态压缩???

转载于:https://www.cnblogs.com/JMDWQ/archive/2012/08/03/2621940.html

你可能感兴趣的文章
vue实例中中data属性三种写法
查看>>
uva1636 - Headshot(条件概率)
查看>>
iOS开发 runtime实现原理以及实际开发中的应用
查看>>
BZOJ2437 NOI2011兔兔与蛋蛋(二分图匹配+博弈)
查看>>
android 学习资源网址
查看>>
shell基础
查看>>
2018.1.15
查看>>
[集合DP] UVA 10651 Pebble Solitaire
查看>>
qt安装遇到的错误
查看>>
寻找完美平方数
查看>>
java:Apache Shiro 权限管理
查看>>
objective c的注释规范
查看>>
FreeNas安装配置使用
查看>>
机器学习中的F1-score
查看>>
编译安装php5.5.38
查看>>
常用查找数据结构及算法(Python实现)
查看>>
Scrapy框架-CrawlSpider
查看>>
Django(一)框架简介
查看>>
java.lang.OutOfMemoryError: Java heap space
查看>>
popular short sentences
查看>>