链接:https://ac.nowcoder.com/acm/contest/51663/B 来源:牛客网 定义一个01串的权值为:任选一个'0'和一个'1',选择不同下标的方案数。例如,"0100...

这道题目要求求出所有长度为n的01串的权值之和,其中权值定义为选择一个'0'和一个'1',并且这两个字符的下标不能相同的方案数。

解题思路是,对于每个01串中的每个'0',计算它左边有多少个'1',然后计算它右边有多少个'1',最后将它左边的'1'的个数乘以它右边'1'的个数即为它的贡献值。对于每个01串,将它的贡献值累加起来即可得到所有01串的权值之和。

代码实现时,可以用两个数组分别记录每个'0'左边和右边的'1'的个数,然后遍历所有01串,将每个'0'的贡献值加起来即可。最后记得对答案取模。

下面是一份可能的AC代码:

MOD = 1000000007

你可能感兴趣的:(算法,c++,数据结构,开发语言)