B题 解题思路

PS:这次比赛一题滚粗 受到了深深地打击。。。。。。。

题意: 给出一个矩阵 矩阵每行的和必须为2 且是一个沿右对角线对称的矩阵 问你大小为n的这样的合法矩阵有多少个。

解题思路:
题目给出的合法矩阵是一个类似与邻接矩阵的样式。 所以应该往这方面去考虑。
每行之和等于2 , 代表每个点都连有两条边,可以有重边 不能有自环。
这说明 每个点属于且仅属于一个环。
因为输入只有一个n
应该要往dp递推的方向上去想。

现在开始找递推式。
定义dp[n]表示n个点构成的合法图的方案数。
思考每加入一个新球,如何从已知状态转移。
考虑从前面的n-1个球中选取一些球和新球组成一个环。
特殊考虑只取一个旧球的情况,
这种情况下这个旧球有n-1种方案 剩下的n-2个球组成的合法方案数已经求出。
所以这种情况下 方案数为(n-1)f(n-2)
推广到一般情况
当我们取k个旧球,剩下的球与新球组成环时,旧球的取法有C(n-1,k) ,剩下的旧球与新球组成环的方案数有(n-1-k)!种
但是考虑对称性 需要除以2。 又考虑到只取一个球的时候不需要考虑对称性 ,所以把这种情况单独摘出来考虑。
最后得到 dp[n]的递推式就是
dp[n] = (n-1) dp[n-2] + sigma(x:2->n-3)((n-1)!/(2*x!)dp[x])
但是这个东西有一个讨厌的sigma 我们可以通过相减的方法来消除这个sigma。

化简过程如下

全部评论
请问取出的旧球与新球组成环的方案数为什么有(n-1-k)!种呀?
点赞 回复 分享
发布于 2018-07-20 12:22
第一个条件* Ai, j ∈ {0, 1, 2} for all 1 ≤ i, j ≤ n. 哪里体现了呢?
点赞 回复 分享
发布于 2018-07-28 13:21
按照答主的下文,感觉应该是取出k个球后,剩下的n-k-1个旧球和1个新球组成环,共(n-k-1)!种方案。
点赞 回复 分享
发布于 2018-07-20 14:36
谢谢大佬~
点赞 回复 分享
发布于 2018-07-20 01:09

相关推荐

这是全挂的意思吗
投递小鹏汽车等公司10个岗位
点赞 评论 收藏
分享
程序员牛肉:1.大头肯定是院校问题,这个没啥说的。 2.虽然有实习,但是实习的内容太水了,在公司待了七个月的时间,看起来就只做了jwt和接入redis。爬取新闻,数据导入。这几个需求值得你做七个月吗?这不就是三四个月的工作量吗?我要是面试官的话真心会认为你能力不太行。所以既然有实习了,一定要好好写,像是Swagger这种东西是真没必要写上去,就拉一个包的事情。 3.我个人觉得话,在校生不要把自己当社招看,除非你的项目是特别牛逼,特别有名的含金量,否则不要写这种密密麻麻的一串子工作职责。你的项目只有一个作用,就是供面试官从中来抽取八股对你进行拷打。 但是你现在这个看不来什么技术点,可以改一下,详细表述一下你用什么技术实现了什么功能,在实现这个功能的过程中,你解决了什么难题。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务