1. 程式人生 > >指定整數陣列中輸出和為一整數的所有組合

指定整數陣列中輸出和為一整數的所有組合

題目:編寫一個函式,在陣列a[10] = {1,3,5,7,9,11,13,15,17}中輸出和為25的所有整數組合

思想:遞迴,探底一種情況後返回前一種狀態。

程式碼:

#include <stdio.h>
#include <string.h>

char a[10] = {1,3,5,7,9,11,13,15,17};
char b[10];

void f(int n)
{
	static int n1 = 0;
	static int n2 = -1;
	int i;
	int j;
	
	for(i = n1;i < 10;i++)
	{
		if(n > a[i])
		{
			n1 = i+1;
			n2++;
			b[n2] = a[i];
			n -= a[i];
			f(n);
			n += a[i];
			n2--;
		}
		else if(n == a[i])
		{
			n2++;
			b[n2] = a[i];
			for(j = 0;j <= n2;j++)
			{
				printf("%d ",b[j]);
			}
			printf("\n");
			n2--;
			return;
		}
		else
		{
			return;
		}
	}
}

int main()
{
	f(25);
	return 0;
}