东哥等等我
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了,输入处理极其麻烦。。。