再帰関数の操作に問題があるので、私の問題は、ゴールデンコインを表す配列があることです。この配列には、長期的にすべてのユーザーが取得する方法で2人のユーザーと共有する必要のあるコインがあります。同量の金または最良の解決策...このように
Gold
10 6 5 2
User A : gets 10 2
User B : gets 6 5
ユーザーAとユーザーBの間の絶対値は、私に違いを与えます。この場合は1になります
この問題を解決するには、利用可能なすべての組み合わせを実行する必要があります。そのため、ブルートフォースと再帰関数を使用します。これを行うには、すべての組み合わせを実行し、前の組み合わせよりも優れている場合は、2つの組み合わせの絶対差を確認する必要があります。グローバル変数に保存するのが最適です...
問題は、機能がまったくうまく機能していないことです..あなたが私を助けてくれれば私は感謝されます...
コードは以下のとおりです。
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
int best = 0; // keeps the best option
int share_friends_recursive(int nelems,int a[],int friend_a,int friend_b,int i){
int sub = 0;
friend_a += a[i];
friend_b += a[i+1];
if(i+1 == nelems){
return 0;
}else{
sub = abs(friend_a - friend_b);
if(sub < best){
best = sub;
}
i++;
share_friends_recursive(nelems,a,friend_a,friend_b,i);
}
}
int main(int argc, char *argv[]) {
//
int nelems = 4;
int a[] = {10,6,5,2};
//friend A can get the first value
// friend B gets the second one ...
share_friends_recursive(nelems,a,0,1,0);
printf("%d \n",best);
return 0;
}