1.输出正整数和等于n的所有不增的正整数和式

#include "stdafx.h"
#define N 100
void rd(int *a, int n, int k);
void main()
{
	int n, a[N];
	printf("请输入一个正整数1~20:");
	scanf_s("%d", &n);
	a[0] = n;
	printf("不增的和式分解结果:\n");
	rd(a, n, 1);
}
void rd(int *a, int n, int k)   //n表示需要分解的数  k表示要分解的第k个和数
{
	int i, p;
	for (i = n; i >= 1; i--)
	{
		if (i <= a[k - 1])   
		{
			a[k] = i;  
			if (i == n)
			{
				printf("%d=%d", a[0], a[1]);
				for (p = 2; p <= k; p++)
					printf("+%d", a[p]);
				printf("\n");
			}
			else
				rd(a, n - i, k + 1);

		}
	}
	
}



摘自《零基础学数据结构》

你可能感兴趣的:(数据结构)