再帰を使用してフォローを達成しようとしましたが、segfaultplsを取得すると修正されますか?
セット{1、、3,5,7}の順列を使用して問題を解決しようとしましたが、必要な結果を出力できませんでした。奇数の数のすべての構成を出力します。つまり、n = 8の場合:7 + 1
5 + 3
5 + 1 + 1 + 1
3 + 3 + 1 + 1
3 + 1 + 1 + 1 + 1 + 1
1 + 1 + 1 + 1 + 1 + 1 + 1 + 1
sumto8(a、start、sum1)は//関心のある要素を選択するsumto8(a、start、sum)は//関心のある要素を選択する
#include<iostream>
#include<stdio.h>
int sumto8(int*,int,int);
int n=4;
int c=8;
int main()
{
int a[]={1,3,5,7};
sumto8(a,0,c);
}
int sumto8(int* a,int start,int sum)
{
if((sum<0) || (start>(n-1)))
return -1;
if(sum==0)
{
cout<<" "<<a[start];
return printf("+ %d",a[start]);
}
if(i==-1)
{
return-1;
}
if(j==-1)
{
return -1
}
else
{
int sum1=sum-a[start];
int i=sumto8(a,start,sum1);
int j=sumto8(a,start+1,sum);
}
return printf("+ %d",a[start]);
}
sum<0のif条件が適切にチェックされていないようです...
output :segfault