笔试合集5

东哥等等我

1、蜗牛爬井问题,一只蜗牛在掉到了井里,第一天,白天向上爬n米,晚上掉n/2米,第二天白天向上爬n米,晚上向下掉n/2+n/4米。。。。直到爬出井外。
需要注意,这是一个注重过程的题目,如果使用合并消除的话,最后会得到可能只上升了(1-2^n/1)米。永远达不到n米,更不用说爬出井外了,所以在这个过程中,一旦白天爬了井外,总不能再让它爬回去吧,代码被覆盖了,相信是同学们一定可以写出来,ヾ(◍°∇°◍)ノ゙
2、背包问题,需要注意权重是平均值:

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <algorithm>
#include <math.h>
#include <stack>
#include <string.h>
#include <map>

using namespace std;

struct node
{
    int num;
    int price;
    int value;
}a[101], t;
int main()
{
    int n, m;
    scanf("%d %d", &n,&m);
    for(int i=0;i<n;i++)
    {
        scanf("%d %d %d", &a[i].num, &a[i].price,&a[i].value);
    }

    for(int i=0;i<n;i++)
    {
        for(int j=i+1;j<n;j++)
        {
            if(a[i].value/a[i].price < a[j].value/a[j].price)
            {
                t = a[i];
                a[i] = a[j];
                a[j] = t;
            }
        }
    }
    int sum = 0;
    int price_sum = 0;
//    int flag = 1;
    for(int i=0;i<n;i++)
    {
        for(int j=1;j<=a[i].num;j++)
        {
            if(m < price_sum+a[i].price)
            {
                break;
            }
            sum += a[i].value;
            price_sum += a[i].price;
        }
    }
    printf("%d\n", sum);
    return 0;
}

PS:JD 2020-09-07 前端
别问我为啥不用JS了,输入处理极其麻烦。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值