递归问题

http://kyxxgl.nbu.edu.cn/oj/problem.php?id=1010

 

对于学习递归非常好的题目

 

 1 #include "stdio.h"

 2 int n;

 3 int a[100];

 4 int max(int a,int b)

 5 {

 6     return a>b?a:b;

 7 }

 8 int eat(int limit,int i)

 9 {

10     int max1=0,max2=0;

11     if(i==n)

12     {

13         if(a[i]<=limit)

14             return a[i];

15         else

16             return 0;

17     }

18     if(a[i]<=limit)

19     {

20         max1=eat(limit-a[i],i+1)+a[i];

21         max2=eat(limit ,i+1);

22     }    

23     else

24         max2=max1=eat(limit ,i+1);    

25     return max( max1,max2 );

26 }

27 main()

28 {

29     int limit;

30     scanf("%d%d",&limit,&n);

31     for(int i=1;i<=n;i++)

32         scanf("%d",&a[i]);

33     printf("%d",eat(limit,1));

34 } 

 

你可能感兴趣的:(递归)