挤奶奶牛,解决方案说明

时间:2012-07-22 23:20:14

标签: c++ algorithm bit bitset

我练习C ++解决一些练习,但经过一整天,我无法解决它们。所以,我在网上搜索并找到了一个简短的解决方案,但是,我无法理解它。

练习: http://jeremiahflaga.blogspot.com/2011/09/milking-cows-programming-problem-from.html

解决方案 https://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=13658&lngWId=3

我很感兴趣,因为我想学习使用二进制数据解决问题,比如本练习,所有数据都存储在一个bitset中。

所以,有人可以向我解释解决方案会很好。

1 个答案:

答案 0 :(得分:2)

所有解决方案都填充,然后读取一个bitset。

每秒都在bitset中有一个条目,只要有人挤奶,就会将位设置为1(它们是在for(int j = begin + 1; j <= end; j++)循环中读取输入时设置的。)

然后,一旦读取了所有输入,并且设置了所有适当的位,就会扫描位集以计算0和1的最长序列(从0到1切换,反之亦然if(a[i] != toggler)检测到其中toggler是前一位值。)

如果您看不到上述内容,我建议将代码复制到ide或编辑器中并重新格式化,以便正确缩进。

这不是一个很好的解决方案。也许这是赢得比赛的正确方法,但这并不是大多数人在正常条件下写的代码,因为它非常浪费内存。通常对于“现实生活”中的这类问题,您可以使用(开始,结束)对来管理间隔,合并重叠的间隔。

相关问题