萌新求助

P5684 [CSP-J2019 江西] 非回文串

~~去你的萌新~~
by 是njsz啦qwq @ 2019-11-24 23:31:49


能说一下您的理解和思路吗qaq ~~码风和我太不一样了~~
by 蒟蒻365 @ 2019-11-24 23:35:13


@[蒟蒻365](/user/153307) 就是说把字母放到位置里去,在对称的位置上也放一个,差不多就这样
by 樱初音斗橡皮 @ 2019-11-24 23:38:01


比如有四个a,剩余10个空位,那么构成回文的话是10(放第一个a)乘3(配合第一个a放在对称位置的a是哪一个)乘8(剩余8个位置)(乘1)。
by 樱初音斗橡皮 @ 2019-11-24 23:39:09


@[樱初音斗橡皮](/user/66287) 没有太听懂...您这样是把每个字母都用了吗
by 蒟蒻365 @ 2019-11-24 23:41:07


我的想法是记每个字母出现的次数,因为若要出现回文,如果n是偶数每个的次数必然是偶数,n是奇数就只有一个奇数 然后如果不合法直接输出全排列个数,合法就输出n的全排列减去int(n/2)的全排列
by 蒟蒻365 @ 2019-11-24 23:44:14


因为是用这int(n/2)个数在前面填,前面的填好了,整个就确定了,所有个数就是它的全排列,因为仅字母相同不视为相同,所以不用去重(口胡
by 蒟蒻365 @ 2019-11-24 23:46:46


@[蒟蒻365](/user/153307) 每个字母显然都用了啊。。。是逐字母计算的
by 樱初音斗橡皮 @ 2019-11-24 23:52:49


我也没有去重,正确性应该是可以保证的。。。
by 樱初音斗橡皮 @ 2019-11-24 23:53:16


给相同的字母标号,当第一个字母被放置的时候第二三四个中有一个一定要在对应的对称位,如果是二号则考虑三号,四号放对称;如果是三号则考虑二号,四号放对称;如果是四号则考虑二号,三号放对称位。
by 樱初音斗橡皮 @ 2019-11-24 23:55:54


| 下一页