0

数字の連続する数字を合計し、それらの最大合計を返す関数を作成する必要があります。引数 (m,t) を受け取る関数を作成しました。m- は数値 (int) を表し、t (int も) は合計する連続した桁数を表します。今、私はそれが数字のすべての桁を通過し、最後に最大値を返すようにしたい. 私のコードが機能しない理由がわかりません:

def sum_digits(m, t):
    str_m= str(m)

    for i in range(len(str_m)):
        if t+i<len(str_m):
            num= str_n[i:t+i]
            num1='+'.join(num)
            num2= str(eval(num1))
            lst= list(num2)
        else:
            break


return max (lst)
4

2 に答える 2

0

あなたが機能しない理由は、lst反復ごとにリセットされるためです。最初に設定して、繰り返しごとに追加するつもりだったと思います。また:

ああああ!!!! あなたは必要ありませんeval

def max_sum(m, t):
    digits = map(int, str(m))
    max_sum = cur_sum = sum(digits[:t])
    for i, x in enumerate(s[t:], t):
        cur_sum += x - digits[i - t]
        max_sum = max(max_sum, cur_sum)
    return max_sum

また、これには単純な O(t * log m) (または O(t * n)) ではなく、O(log m) (または n が m の桁数の場合は O(n)) の実行時間があります。

于 2013-11-09T23:23:18.633 に答える