Skip to content

Instantly share code, notes, and snippets.

@itarato
Created March 22, 2015 12:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save itarato/83773bbcafc826e83102 to your computer and use it in GitHub Desktop.
Save itarato/83773bbcafc826e83102 to your computer and use it in GitHub Desktop.
Diet. FB, ch, mid.
found = False
def solve(results, parts, sums, idx):
global found
if found:
return True
if sums == results:
found = True
return True
if idx >= len(parts):
return False
if sums[0] > results[0] or sums[1] > results[1] or sums[2] > results[2]:
return False
sums_a = sums[:]
sums_a[0] += parts[idx][0]
sums_a[1] += parts[idx][1]
sums_a[2] += parts[idx][2]
if solve(results, parts, sums_a, idx + 1):
return True
sums_b = sums[:]
if solve(results, parts, sums_b, idx + 1):
return True
return False
if __name__ == '__main__':
f = open('diet.txt', 'r')
example_num = int(f.readline())
for i in range(example_num):
vp, vc, vf = f.readline().split(' ')
resp = int(vp)
resc = int(vc)
resf = int(vf)
trial_num = int(f.readline())
parts = []
for j in range(trial_num):
vp, vc, vf = f.readline().split(' ')
parts.append([int(vp), int(vc), int(vf)])
found = False
res = solve([resp, resc, resf], parts, [0, 0, 0], 0)
print(res)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment