#include <stdio.h>
// 部分和を求める関数
void findCombinations(int data[], int size, int target, int k) {
int i, j, sum, count;
// 要素の組み合わせをチェック
for (i = 0; i < (1 << size); i++) {
sum = 0;
count = 0;
for (j = 0; j < size; j++) {
if (i & (1 << j)) {
sum += data[j];
count++;
}
}
// 和が目標値と一致し、要素数がkの場合、結果を表示
if (sum == target && count == k) {
for (j = 0; j < size; j++) {
if (i & (1 << j)) {
}
}
}
}
}
int main() {
int data[] = {1, 2, 3, 4};
int size = sizeof(data) / sizeof(data[0]);
int target = 5;
int k;
// 要素数が1から4までの組み合わせを検索
for (k = 1; k <= size; k++) {
printf("Combinations with %d elements:\n", k
); findCombinations(data, size, target, k);
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgovLyDpg6jliIblkozjgpLmsYLjgoHjgovplqLmlbAKdm9pZCBmaW5kQ29tYmluYXRpb25zKGludCBkYXRhW10sIGludCBzaXplLCBpbnQgdGFyZ2V0LCBpbnQgaykgewogICAgaW50IGksIGosIHN1bSwgY291bnQ7CiAgICAKICAgIC8vIOimgee0oOOBrue1hOOBv+WQiOOCj+OBm+OCkuODgeOCp+ODg+OCrwogICAgZm9yIChpID0gMDsgaSA8ICgxIDw8IHNpemUpOyBpKyspIHsKICAgICAgICBzdW0gPSAwOwogICAgICAgIGNvdW50ID0gMDsKICAgICAgICBmb3IgKGogPSAwOyBqIDwgc2l6ZTsgaisrKSB7CiAgICAgICAgICAgIGlmIChpICYgKDEgPDwgaikpIHsKICAgICAgICAgICAgICAgIHN1bSArPSBkYXRhW2pdOwogICAgICAgICAgICAgICAgY291bnQrKzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAvLyDlkozjgYznm67mqJnlgKTjgajkuIDoh7TjgZfjgIHopoHntKDmlbDjgYxr44Gu5aC05ZCI44CB57WQ5p6c44KS6KGo56S6CiAgICAgICAgaWYgKHN1bSA9PSB0YXJnZXQgJiYgY291bnQgPT0gaykgewogICAgICAgICAgICBwcmludGYoIkNvbWJpbmF0aW9uOiAiKTsKICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IHNpemU7IGorKykgewogICAgICAgICAgICAgICAgaWYgKGkgJiAoMSA8PCBqKSkgewogICAgICAgICAgICAgICAgICAgIHByaW50ZigiJWQgIiwgZGF0YVtqXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcHJpbnRmKCJcbiIpOwogICAgICAgIH0KICAgIH0KfQoKaW50IG1haW4oKSB7CiAgICBpbnQgZGF0YVtdID0gezEsIDIsIDMsIDR9OwogICAgaW50IHNpemUgPSBzaXplb2YoZGF0YSkgLyBzaXplb2YoZGF0YVswXSk7CiAgICBpbnQgdGFyZ2V0ID0gNTsKICAgIGludCBrOwogICAgCiAgICAvLyDopoHntKDmlbDjgYwx44GL44KJNOOBvuOBp+OBrue1hOOBv+WQiOOCj+OBm+OCkuaknOe0ogogICAgZm9yIChrID0gMTsgayA8PSBzaXplOyBrKyspIHsKICAgICAgICBwcmludGYoIkNvbWJpbmF0aW9ucyB3aXRoICVkIGVsZW1lbnRzOlxuIiwgayk7CiAgICAgICAgZmluZENvbWJpbmF0aW9ucyhkYXRhLCBzaXplLCB0YXJnZXQsIGspOwogICAgfQogICAgCiAgICByZXR1cm4gMDsKfQ==