`
huobengle
  • 浏览: 860656 次
文章分类
社区版块
存档分类
最新评论

USACO Section 4.3 Letter Game - 简单枚举

 
阅读更多


本来是1A的...就因为不知怎么USACO不认识gets..给报了次Compile error...这题算是简单的...

首先我为了方便判断一个字符串是不是由所给的字符组成(不一定全部用上)..那么用一个26位的int数组h [ ] 先记录所给的字符个数...如aabb那么h [ ] = { 2,2,0,0....0 }..假设这里来一个字符串...那么就把 h [ ] 的信息先转移给另一个一样的串 ( 因为h要重复利用的 ) p [ ]...从字符串第一位开始扫到最有一位..若其某位在p [ ] 记录出现次数非0.则通过这位..p [ ]的这一位计数-1...在p [ ] 记录出现次数为0...则说明在所给的字符不能组成这个字符串..此串不符合所需...

因为不论是字典里的每个字符的长度或者值都会进行很多次运算...为了避免过多重复计算..我在输入的时候就将所有字符串的长度记在len[ ] 里...将所有字符串所产生的值记录在M [ ] 里了..

从字典的第一个数开始枚举..并判断其是由所给字符组成(不一定要全部用上..)..如果通过..就看其单独做为一个或者和另一个组合...因为题目所给的字符串只会在3~7长度..所以要么就是一个..要么就是两个组成一个...每次都判断下当前所得到的权值是否比前面所得到的大..大的话就更新..记录..计数器清1...若相等则计数器+1..并记录串...

题目所给的权值计算也是可以用上的...比如说扫到一个串如果其权值大于了所给的字符集合的最大权值..那么肯定就不需要再进一步判断其合法性了...


Program:



分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics