平衡数 考虑将数列逆序,得到的数列使用动态规划进行计算矩阵各个元素的值。使用dp[i][j]代表从第i个位置的数字到第j个位置数字的乘积,然后对两个数列分别进行从前向后以及从后向前的对比,若存在相等的比较,则可以判断为平衡数。 def dp(): num = sys.stdin.readline().strip() if len(num)==0: print print "YES" return #prod = 1 dp = [[0 for i in range(len(num))] for j in range(len(num))] rdp = deepcopy(dp) rdp = deepcopy(dp) for i in range(len(num)): dp[i][i] = int( dp[i][i] = int(num[i]) rdp[i][i] = int( rdp[i][i] = int(num[len(num)-1-i]) #prod = prod*int(num[i]) rnum = num[::-1] for k in range(len(num)): for j in xrange(k+1,len(num)): dp[k][j] = dp[k][j- dp[k][j] = dp[k][j-1]*int(num[j]) for k in range(len(num)): for j in xrange(k+1,len(num)): rdp[k][j] = rdp[k][j- rdp[k][j] = rdp[k][j-1]*int(rnum[j]) #if dp[k][j]*dp[k][j]==prod: for j in xrange(1,len(num)): if dp[0][j]==rdp[0][len(num)-2-j] and len(num)-2-j>=0: print print "YES" return if j==len(num)-1: print print "NO"
点赞 评论

相关推荐

想申请延毕了,找工作找到崩溃,越找就越想摆烂,还有25届的和我一样感受吗?
码农索隆:没事哒,好兄弟,慢慢来,调整心态,车到山前必有路,感到迷茫的时候,多抬头看看
点赞 评论 收藏
分享
AAA专业长城贴瓷砖刘大爷:这样的简历我会直接丢进垃圾桶,花里胡哨的
点赞 评论 收藏
分享

牛客热帖

更多
牛客网
牛客企业服务