笔试助攻题(思路)

题意:

给你一个长度为1e5的串,包含数字0-9和?

?可以替换成任意数字

要求保证任意相邻的10个数均不相同

问有多少种方案?

思路:

乍一看还像个dp什么的,每个位置跟前后9个都有关系,越想越复杂

然而仔细一想发现,每隔10个数的数字是相同的

也就是说串中的1,11,21,,,这些位置的数字都是相同的

就是这个突破口,这题就变成了大水题

只需要开一个10的f数组,赋初值-1,然后对着串扫一遍

如果当前位置p是数字,就看f[p%10]是否为-1,如果是-1,则改为当前值

如果不为-1,则必须与当前值相等,否则输出0

然后再判断f数组中不为-1的位置的所有的数字必须不同,否则输出0

然后还要特判一下小于10的串,如果有解则为A(10-数字个数,问号个数)

大于等于10的串的解就是f数组里-1个数的阶乘

代码就不写了~

转载于:https://www.cnblogs.com/d-e-v-i-l/p/5988286.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值