据说是华为2003年校园招聘笔试题

C语言

有4种面值的邮票很多枚,这4种邮票面值分别1, 4, 12, 21,现从多张中最多任取5张进行组合,求取出这些邮票的最大连续组合值。(据说是华为2003年校园招聘笔试题)

#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);

}

同类其他面试题 点击新一篇或旧一篇可浏览全部同类面试题

新一篇:
旧一篇:

你有答案? 你对以上面试题有意见? 你想发表你的见解? 写下来吧!你的分享将会让很多人受益!

相关面试题

·C语言的字符串复制面试题
·C语言综合编程题
·C语言面试问答题
·C语言笔试
·C++标准库头文件都有哪些?

版权声明:本站大部分内容为原创! 另有少部分内容整理于网络,如需转载本站内容或关切版权事宜请联系站长。未经允许,严禁复制转载本站内容,否则将追究法律责任。 本站欢迎与同类网站建立友情链接,请联系QQ:176687814