#include #define SIZE 40 int main(int argc, const char * argv[]) { int arr[16][4] = { {0,0,0,0}, {0,0,0,1}, {0,0,1,0}, {0,0,1,1}, {0,1,0,0}, {0,1,0,1}, {0,1,1,0}, {0,1,1,1}, {1,0,0,0}, {1,0,0,1}, {1,0,1,0}, {1,0,1,1}, {1,1,0,0}, {1,1,0,1}, {1,1,1,0}, {1,1,1,1} }; unsigned short chosen[16]; unsigned int result[16]; int wts[] = {29, 10, 20, 15}; int calories[] = {34, 20, 31, 24}; for (int i = 0; i < 16; i++) { int sum = 0; for (int j = 0; j < 4; j++) { if (arr[i][j] == 1) sum += wts[j]; } if (sum > SIZE || sum == 0) chosen[i] = 0; else chosen[i] = 1; } for (int i = 0; i < 16; i++) { int sum = 0; if (chosen[i] == 1) { for (int j = 0; j < 4; j++) { if (arr[i][j] == 1) sum += calories[j]; } result[i] = sum; } else { result[i] = 0; } } int max = result[0]; for (int i = 0; i < 16; i++) { if (max < result[i]) max = result[i]; } printf("Result: %d\n", max); return 0; }