[BOJ/伯俊]14889開始とリンク(Python)
https://www.acmicpc.net/problem/14889
Problem
Problem
N人をN/2人に分けて、それぞれのエネルギーの和を合わせた組み合わせの最高値の問題を探します.
Solution
1)グループ化
2)配列によるグループ化の組合せの解
3)テーブル内のグループ化されたコラボレーションの検索と追加
4)最大値を求める
Python Code import sys
from itertools import combinations
from itertools import permutations
N=int(sys.stdin.readline())
NList=[i for i in range(1,N+1)]
arrList=[]
for _ in range(N):
tmp=list(map(int,sys.stdin.readline().split()))
arrList.append(tmp)
combiList=list(combinations(NList,N//2))
Asum=0
Bsum=0
minValue=1e9
def sumFunction(setRawPermu,setRemainPermu):
global Asum
global Bsum
global minValue
Asum=0
Bsum=0
for row in setRawPermu:
Asum+=arrList[row[0]-1][row[1]-1]
for row in setRemainPermu:
Bsum+=arrList[row[0]-1][row[1]-1]
minValue=min(minValue,abs(Asum-Bsum))
for combi in combiList:
setRaw=list(combi)
setRemain=list(set(NList)-set(setRaw))
setRawPermu=list(permutations(setRaw,2))
setRemainPermu=list(permutations(setRemain,2))
sumFunction(setRawPermu,setRemainPermu)
print(minValue)
Reference
この問題について([BOJ/伯俊]14889開始とリンク(Python)), 我々は、より多くの情報をここで見つけました
https://velog.io/@iwsl1234/BOJ백준-14889.-스타트와링크-Python
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
1)グループ化
2)配列によるグループ化の組合せの解
3)テーブル内のグループ化されたコラボレーションの検索と追加
4)最大値を求める
Python Code import sys
from itertools import combinations
from itertools import permutations
N=int(sys.stdin.readline())
NList=[i for i in range(1,N+1)]
arrList=[]
for _ in range(N):
tmp=list(map(int,sys.stdin.readline().split()))
arrList.append(tmp)
combiList=list(combinations(NList,N//2))
Asum=0
Bsum=0
minValue=1e9
def sumFunction(setRawPermu,setRemainPermu):
global Asum
global Bsum
global minValue
Asum=0
Bsum=0
for row in setRawPermu:
Asum+=arrList[row[0]-1][row[1]-1]
for row in setRemainPermu:
Bsum+=arrList[row[0]-1][row[1]-1]
minValue=min(minValue,abs(Asum-Bsum))
for combi in combiList:
setRaw=list(combi)
setRemain=list(set(NList)-set(setRaw))
setRawPermu=list(permutations(setRaw,2))
setRemainPermu=list(permutations(setRemain,2))
sumFunction(setRawPermu,setRemainPermu)
print(minValue)
Reference
この問題について([BOJ/伯俊]14889開始とリンク(Python)), 我々は、より多くの情報をここで見つけました
https://velog.io/@iwsl1234/BOJ백준-14889.-스타트와링크-Python
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
import sys
from itertools import combinations
from itertools import permutations
N=int(sys.stdin.readline())
NList=[i for i in range(1,N+1)]
arrList=[]
for _ in range(N):
tmp=list(map(int,sys.stdin.readline().split()))
arrList.append(tmp)
combiList=list(combinations(NList,N//2))
Asum=0
Bsum=0
minValue=1e9
def sumFunction(setRawPermu,setRemainPermu):
global Asum
global Bsum
global minValue
Asum=0
Bsum=0
for row in setRawPermu:
Asum+=arrList[row[0]-1][row[1]-1]
for row in setRemainPermu:
Bsum+=arrList[row[0]-1][row[1]-1]
minValue=min(minValue,abs(Asum-Bsum))
for combi in combiList:
setRaw=list(combi)
setRemain=list(set(NList)-set(setRaw))
setRawPermu=list(permutations(setRaw,2))
setRemainPermu=list(permutations(setRemain,2))
sumFunction(setRawPermu,setRemainPermu)
print(minValue)
Reference
この問題について([BOJ/伯俊]14889開始とリンク(Python)), 我々は、より多くの情報をここで見つけました https://velog.io/@iwsl1234/BOJ백준-14889.-스타트와링크-Pythonテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol