码迷,mamicode.com
首页 > 其他好文 > 详细

Algorithm --> 邮票连续组合问题

时间:2015-07-08 22:21:59      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:

邮票组合问题

有四种面值的邮票很多枚,面值分别为1,4,12,21,取五张,求取出这些邮票的最大连续组合值

代码:

#include <stdio.h>
#include <string.h>
#define N 5 #define M 5 int k, Found, Flag[N]; int Stamp[M] = {0, 1, 4, 12, 21};
// 在剩余张数n中组合出面值和Value int Combine(int n, int Value) {   if(n >= 0 && Value == 0)   {    Found = 1;    int Sum = 0;    for(int i=0; i<N && Flag[i] != 0; i++)    {      Sum += Stamp[Flag[i]];      printf("%d ", Stamp[Flag[i]]);   }    printf("\tSum=%d\n\n", Sum);   }   else  {
   for(int i=1; i<M && !Found && n>0; i++)    if(Value-Stamp[i] >= 0)    {      Flag[k++] = i;      Combine(n-1, Value-Stamp[i]);      Flag[--k] = 0;    }
  }   
return Found; }
int main(int argc, char* argv[]) { for(int i=1; Combine(N, i); i++, Found=0); }

 

Algorithm --> 邮票连续组合问题

标签:

原文地址:http://www.cnblogs.com/jeakeven/p/4631377.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!