import random #--------- 入力例 ---------- N = 5# カードの枚数 A = [random.randint(-20, 20) for i inrange(N)] B = [random.randint(-20, 20) for i inrange(N)] #--------------------------- print('【入力データの確認】') print('A', A) print('B', B) print()
# omote=True のとき表の総和が正、ura=True のとき裏の総和が正 # omote=False のとき表の総和が負、ura=False のとき裏の総和が負 defsolve(omote, ura, A, B): sum = 0 for i inrange(N): card1 = A[i] if omote else -A[i] card2 = B[i] if ura else -B[i] # カード i は選ぶべきかどうか? if card1 + card2 >= 0: sum += (card1 + card2) print('選択したカード:', card1, card2) print(' 合計:', sum) print('---------------------') returnsum
# 表の総和の正負と、裏の総和の正負を全探索 Answer1 = solve(True, True, A, B); Answer2 = solve(True, False, A, B); Answer3 = solve(False, True, A, B); Answer4 = solve(True, True, A, B);
#--------- 入力例 ---------- N = 4# 生徒数 K = 30# 体力と気力の差 A = [20, 10, 50, 30] # 生徒の体力 B = [30, 40, 10, 60] # 生徒の気力 #--------------------------- # 整数の組 (a, b) が決まったときの、参加可能な生徒数を求める defGetScore(a, b, A, B, K): cnt = 0 for i inrange(N): if a <= A[i] <= a + K and b <= B[i] <= b + K: cnt += 1 return cnt # (a, b) の組を全探索 Answer = 0 for a inrange(1, 101): for b inrange(1, 101): Score = GetScore(a, b, A, B, K) Answer = max(Answer, Score) # 出力 print('解:', Answer)