去哪儿0AC代码-为啥复制过来这么多乱码

# 一个正整数的数组 arr,数组满足0 <= arr[i] <= 9,挑出任意个数组成一个最大的数,
# 并且能被3整除,并以字符串形式返回。50%
#!/bin/python
# -*- coding: utf8 -*-
import sys
import os
import re

class Solution:
    def solution(self, d):
        n = len(d)
        ans = []
        d.sort(reverse=True)
        for i in d:
            if i % 3 == 0:
                ans.append(str(i))
        t1 = 8 in d and (7 in d or 4 in d or 1 in d)
        t2 = 7 in d and (5 in d or 2 in d)
        t3 = 5 in d and (4 in d or 1 in d)
        t4 = 4 in d and 2 in d
        t5 = 2 in d and 1 in d
        while t1 or t2 or t3 or t4 or t5:
            if 8 in d:
                if 7 in d:
                    ans.append(str(8))
                    ans.append(str(7))
                    d.remove(8)
                    d.remove(7)
                elif 4 in d:
                    ans.append(str(8))
                    ans.append(str(4))
                    d.remove(8)
                    d.remove(4)
                elif 1 in d:
                    ans.append(str(8))
                    ans.append(str(1))
                    d.remove(8)
                    d.remove(1)
            if 7 in d:
                if 5 in d:
                    ans.append(str(7))
                    ans.append(str(5))
                    d.remove(7)
                    d.remove(5)
                elif 2 in d:
                    ans.append(str(7))
                    ans.append(str(2))
                    d.remove(7)
                    d.remove(2)
            if 5 in d:
                if 4 in d:
                    ans.append(str(5))
                    ans.append(str(4))
                    d.remove(5)
                    d.remove(4)
                elif 1 in d:
                    ans.append(str(5))
                    ans.append(str(1))
                    d.remove(5)
                    d.remove(1)
            if 4 in d:
                if 2 in d:
                    ans.append(str(4))
                    ans.append(str(2))
                    d.remove(4)
                    d.remove(2)
            if 2 in d:
                ans.append(str(2))
                ans.append(str(1))
                d.remove(2)
                d.remove(1)
            t1 = 8 in d and (7 in d or 4 in d or 1 in d)
            t2 = 7 in d and (5 in d or 2 in d)
            t3 = 5 in d and (4 in d or 1 in d)
            t4 = 4 in d and 2 in d
            t5 = 2 in d and 1 in d         
                ans.sort(reverse=True)
        if len(ans) == 0:
            return ''
        else:
            return ''.join(ans[i] for i in range(len(ans)))


_d_cnt = 0
_d_cnt = int(input())
_d_i = 0
_d = []
while _d_i < _d_cnt:
    _d_item = int(input())
    _d.append(_d_item)
    _d_i += 1

s = Solution()
res = s.solution(_d)

print(res + "\n")


# 给定一个整数数组m,逐次选出任意整数,请返回所有对应整数、对应选出的次数的乘积之和能达到的最大值,
# 可以放弃选择某些元素。比如数组元素为[a1,a2,a3,a4],依次选择a3,a2和a4,乘积之后的结果就是a3*1+a2*2+a4*3。
# 89%
import sys
import os
import re


class Solution:
    def solution(self, arr):
        arr.sort()
        n = len(arr)
        ans = 0
        ans1 = 0
        ans2 = 0
        ans3 = 0
        ans4 = 0
        for i in range(n-1):
            if arr[i] <= 0 and arr[i+1] > 0:
                t1 = 1
                t2 = 1
                t3 = 1
                t4 = 1
                t5 = 1
                for j in range(i, n):
                    ans += t1 * arr[j]
                    t1 += 1
                for k in range(i-1, n):
                    if k >= 0:
                        ans1 += t2 * arr[k]
                        t2 += 1
                for w in range(i-2, n):
                    if w >= 0:
                        ans2 += t3 * arr[w]
                        t3 += 1
                for w1 in range(i-3, n):
                    if w1 >= 0:
                        ans3 += t4 * arr[w1]
                        t4 += 1
        return max(ans, ans1, ans2, ans3, ans4)

_arr_cnt = 0
_arr_cnt = int(input())
_arr_i = 0
_arr = []
while _arr_i < _arr_cnt:
    _arr_item = int(input())
    _arr.append(_arr_item)
    _arr_i += 1

s = Solution()
res = s.solution(_arr)

print(str(res) + "\n")  # Lisa 喜欢字符串,尤其是长字符串。对于每个字符串,她都有专门的评价体系来判断字符串的优雅程度。
# 她定义一个字符串 S[1..3n−2] (n≥2) 是一个半回文当且仅当它满足 S[i]=S[2n−i]=S[2n+i−2] (1≤i≤n) .
# 例如dfgfdfg是一个半回文串,而dfgjfdfgj不是。现在,Lisa 生成了一些长字符串。
# 她请求你帮助找出有多少个半回文子串。优雅的字符串 60%

#!/bin/python
# -*- coding: utf8 -*-
import sys
import os
import re

class Solution:
    def solution(self, n, str):
        m = len(str)
        if m % 2 == 0:
            ans = 3
        else:
            ans = 2
        return ans

n = int(input())

try:
    str = input()
except:
    str = None

s = Solution()
res = s.solution(n, str)

print(res)

#去哪儿##笔经#
全部评论
其实第二题回溯可以过
点赞 回复 分享
发布于 2021-09-14 20:39

相关推荐

联通 技术人员 总包不低于12
点赞 评论 收藏
分享
accaacc:2到4k,不是2k到4k,所以年薪是30块
点赞 评论 收藏
分享
点赞 1 评论
分享
牛客网
牛客企业服务