iT邦幫忙

0

救救孩子的期末

  • 分享至 

  • xImage

請參考附檔x_sum.c完成此函數,此函數接收一陣列與陣列大小,並計算陣列中任意三個數字相加為零的組合,最後回傳共有幾組組合(不會有重複的數字)

int x_sum(int[], int); (這是附檔)

看更多先前的討論...收起先前的討論...
我不想害了孩子
小魚 iT邦大師 1 級 ‧ 2021-06-26 18:09:46 檢舉
救了期末, 害了一生.
自己的孩子自己救
如果小孩是國中小,這麼問可以,但如果是高中以上甚至大學
怎麼這麼問,這種題目上網都能找到範例,還來問
連餵狗都懶得小孩,這麼寶是有事嘛
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

1
海綿寶寶
iT邦大神 1 級 ‧ 2021-06-26 22:56:12

這題簡單的我來
另外兩題難的要靠別的高手了

#include <stdio.h>
#include <stdlib.h>

#define MAX 100

int x_sum(int arr[], int len) {    
    int set[MAX];
    int m, n, position;
    int i;

    int answer = 0;
    m = len;
    n = 3;

    for(i = 0; i < n; i++)
        set[i] = i + 1;

    int check = 0;
    for(i = 0; i < n; i++) {
        printf("%d ", arr[set[i]-1]);
        check = check + arr[set[i]-1];
    }
    if (check==0) { answer = answer + 1; }
    printf(" sum = %d\n", check);

    position = n - 1;

    while(1) {
        if(set[n-1] == m)
            position--;
        else
            position = n - 1;

        set[position]++;

        for(i = position + 1; i < n; i++)
            set[i] = set[i-1] + 1;

        check = 0;
        for(i = 0; i < n; i++) {
            printf("%d ", arr[set[i]-1]);
            check = check + arr[set[i]-1];
        }
        if (check==0) { answer = answer + 1; }

        printf(" sum = %d\n", check);

        if(set[0] >= m - n + 1)
            break;
    }

    return answer;
}

int main() {
    int arr[9] = {1,2,3,4,5,-4,0,-2,-1};
    
    int answer = x_sum(arr, 9);
    printf("answer=%d\n", answer);
    
    return 0;
}

海綿寶寶果然是孩子的救星

又一個孩子變成寶寶了

我要發表回答

立即登入回答