全部评论
来挖坟了,回头看代码的时候写会了这道题。 用递推法: func(n,m) = n-1个相邻不等数 - (n-1)个单边为1的相邻不等数 + func(n-2,m) n,m = 3,3
if m<=1 or n<=1:
print(0)
else:
def func(n,m):
if n<=1: # 边界
return 0
if n==2: # 左右都为1,只能取m-1种可能
return m-1
return m*(m-1)**(n-2) - 2*(m-1)**(n-2) + func(n-2,m)
print(func(n,m))
f(n - 1) : 1 a1 a2 a3 ... an-1 1 f(n) : 1 a1 a2 a3 ... an-1 an 1 f(n + 1) : 1 a1 a2 a3 ... an-1 an an+1 1 f(n + 1) = f(n - 1) * (m - 1) + f(n) * (m - 2) 解释,当an = 1时,f(n + 1) : 1 a1 a2 a3 ... an-1 1 an+1 1 ==> f(n - 1) an+1 1,此时 an+1有m-1种可能; 当an != 1时,可以假定在an和an+1之间插入一个1,情况变为 1 a1 a2 a3 ... an-1 an 1 an+1 1 ==> f(n) an+1 1, 此时an+1只有m-2种情况。 因为不能参加这一次笔试,所以只能给出想法,各位大佬看一下可不可行。
等比数列求和: n-1 为偶数, (1-m)^ (n - 1) + (1-m)^ (n - 2) + ...+(1-m)^1 ; n - 1 为奇数 (m - 1)^ (n - 1) - ( (1-m)^ (n - 2) + (1-m)^ (n - 1) + ...+(1-m)^1 ) ac 55%; 解释:(1-m)^ (n - 1) 为: 1到 n - 1 的位置, 每个位置能取的方案有 m - 1种,所以总的方案为(1-m)^ (n - 1) ; (1-m)^ (n - 2) + ...+(1-m)^1: n - 1的位置为1的方案总数; 举个例子: m = 3, n = 3; 结果就是 (-2)^ 2 + (-2) ^ 1 = 2; n = 4 结果是 (2)^3 - (( -2)^ 2 + (-2) ^ 1 ); 有大佬告诉我这个思路不对吗?只有55%,大数问题没处理好??~~~
max(图的深度, 环中节点为2的所有点)+ 最后的排序, 碰了12组。等大佬给答案中。。。。
环形着色除以m。64
直接输出(m-1)^(n-1) - (m-1),36%剩下的超时
感觉就是涂颜色那题的变形,但是只有27%,感觉是大数没处理好
f(n)=f(n-2)*(m-1)+(m-2)*(m-1)^(n-3) ;每个位置有m-1种方法,倒数第三个位置分为1,不为1讨论; 为1:f(n-2)*(m-1)种;不为1:有(m-2)*(m-1)^(n-3)种方法;不知道是思路的问题,还是代码的问题?过不了
lz ac了多少 可以讲讲思路吗
相关推荐
10-02 17:40
门头沟学院 Java 点赞 评论 收藏
分享
点赞 评论 收藏
分享