华为机试—物品放箩筐

/*
  你有一个容量为100的箩筐,给你30个物品,每个物品的体积已知,
  问:最多能装多少个物品。
  思路:排序,最小的体积的先放
  输入:5 59 100 1 2 3 20 20 30 40 50 60 20 20 20 20 10 10 10 10 10 100 20 20 20 20 20 20 20 30
  输出:11
 */
#include<iostream>
using namespace std;
int main(int argc, char *argv[])
{
    int a[30];
    for(int i=0;i<30;++i)
        cin>>a[i];
    for(int i=0;i<30;++i)
        for(int j=i+1;j<30;++j)
        {
            if(a[i]>a[j]){
                int t=a[i];
                a[i]=a[j];
                a[j]=t;
            }
        }
    for(int i=0;i<30;++i)
        cout<<a[i]<<endl;
    int s=100;
    int cnt=0;
    int i=0;
    while(s>0)
    {
        s-=a[i++];
        cnt++;
    }
    cout<<cnt<<endl;
    return 0;
}

时间: 2024-10-14 13:59:40

华为机试—物品放箩筐的相关文章

华为机试—物品放箩筐(高级题160分,含体积价值:贪心算法)

#include <iostream> using namespace std; int m[100][100]; int min(int a,int b) { return (a<b)?a:b; } int max(int a,int b) { return (a>b)?a:b; } void knapsack(int v[],int w[],int c,int n) { int jMax=min(w[n],c); for(int j=0;j<=jMax;j++) m[n]

华为机试—物品放箩筐(只有体积)

#include <iostream> #include <string> using namespace std; int main() { int arr[30],i,j; for (i=0;i<30;i++) { cin>>arr[i]; } for (i=0;i<30;i++) { for (j=0;j<=i;j++) { int tmp; if (arr[i]<=arr[j]) { tmp=arr[j]; arr[j]=arr[i];

华为机试(5)

中级题  题目描述  你有一个容量为100的箩筐,给你30个物品,每个物品的体积已知问:最多能装多少个物品进箩筐  输入描述  :一行30个正整数,用空格隔开,表示每个物品的体积  输出描述  :一个数字,为最多能装下的物品数 输入样例(此处用3个物品作为样例,实际读入为30个)  :5 59 100  输出样例  :2 解题思路:利用性价比对所有物品进行排序,优先装性价比高的,在此题中,性价比就是物品的体积 #include<algorithm>//sort函数 #include<io

[华为机试]输入数字的汉语拼音,每个拼音的首字母大写。输出该数字的阿拉伯数字。

//输入数字的汉语拼音,每个拼音的首字母大写.输出该数字的阿拉伯数字. //JiuBaiJiuShiJiu -> 999 #include<stdio.h> #include<string.h> int result = 0; void add(int n,char wei[]) { if(strcmp(wei,"Wan") == 0) result = result + n * 10000; else if(strcmp(wei,"Qian&q

2014华为机试西安地区A组试题

2014华为机试西安地区A组试题 题目一.分苹果 M个相同苹果放到N个相同篮子里有多少种放法,允许有篮子不放. 1<=M<=10,1<=N<=10 例如5个苹果三个篮子,3,1,1 和 1,1,3是同一种放法 输入 7 3 输出 8 题目分析: 这道题类似于整数划分的题目,这是很早的一道ACM的题目,主要思路就是考递归. ①当苹果数目或者篮子数目为1时候,就只有一种可能 ②当苹果数目小于篮子数目的时候,按照苹果数目来分配 ③当苹果数目大于篮子数目的时候,空一个盘子 + 先每个盘子放

[华为机试真题]70.分苹果

题目 M个相同苹果放到N个相同篮子里有多少种放法,允许有篮子不放. 1<=M<=10,1<=N<=10 例如5个苹果三个篮子,3,1,1 和 1,1,3是同一种放法 输入 7 3 输出 8 思路 设f(m,n) 为m个苹果,n个盘子的放法数目: 当n>m:必定有n-m个盘子永远空着,去掉它们对摆放苹果方法数目不产生影响.即if(n>m) f(m,n) = f(m,m) 当n<=m:不同的放法可以分成两类: (1)有至少一个盘子空着,即相当于f(m,n) = f(m

[华为机试真题]66.单词搜索

题目 代码 /*--------------------------------------- * 日期:2015-07-06 * 作者:SJF0115 * 题目:WordSearch * 来源:华为机试真题 -----------------------------------------*/ #include <iostream> #include <string> #include <vector> #include <stack> #include

华为机试正式版(西安c/c++/java),今天下午去机试的题目,新鲜出炉了!

以下题目都是回忆的,题目都很简单, 大家有些基础就可以参加!(语言可以是c/c++,也可以是java的) 题目一(60分): 字符串操作, 将小写转换成大写, 将大写转化为小写, 数字的不做转换 例如, 输入:aBcD12 输出:AbCd12 题目二(100分): 将输入的字符串按照规定重新排序,如果字符串长度为奇数, 则中间的字符保持不变, 中间字符左侧降序排列, 右侧字符按照升序排列, 如果字符串长度为偶数,则左半侧字符降序排列,右半侧字符则按照升序排列 例如, 输入:ab5de 输出:ba

华为机试 --- 求最大三位数

题目:输入10位0-9数字,取其中三位不同数字组合,求组合出来的最大三位数. 如输入 1 2 3 4 5 6 7 8 9 0,组合出来987最大. 测试代码如下: #include <stdio.h> #include <stdlib.h> int IsSame(int *a, int num); int main() { int i=0; int j=0; int a[10]={0}; int input =0; int length =0; int temp=0; for (i