栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > C++面试题库

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

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

有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=%dnn”, 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);

}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/265501.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号