8.29 美团2024届秋招笔试第一场

牛客网 - 找工作神器|笔试题库|面试经验|实习招聘内推,求职就业一站解决_牛客网 (nowcoder.com)

1.小美的外卖订单

小美正在设计美团外卖的定价信息。已知外卖定价的规则如下:

1. 每道菜有折扣价和原价。折扣价不能超过原价。

2. 订单有满x元减y元的优惠。当购买的菜的价格总和不小于x元时,总价格可以减y元。“减”的价格不能超过“满”的价格。

3. 满减优惠和折扣价是互斥的,当且仅当每个菜都选择了原价才可以触发满减。

4. 系统会自动为客户计算最低价格的方案。

在设计定价时,原价、折扣价和满减的价格都必须是正实数。如果设计的定价发生问题,则会提示数据错误。
请使用等价划分法设计测试用例,来测试该系统的功能。

输入描述:

8.29 美团2024届秋招笔试第一场_第1张图片

输出描述:如果数据有误,则输出一行字符串"error"。 否则输出一个小数,小数点后保留2位即可。该小数代表顾客购买了全部菜各一份时,订单的总价格。

示例1:

输入例子:

8.29 美团2024届秋招笔试第一场_第2张图片

输出例子:12.00

例子说明:虽然触发了满15元减3元,但使用折扣只需要花12元,低于使用满减的价格(20-3=17),因此最终系统会为客户推荐折扣价。

思路:满减和折扣价所有菜只能一起选择其中一个,只需要比较满减和折扣价的价格总和即可。

细节:使用double类型保存数值,最后是输出两位小数,判断价格是否合理(务必>0,且符合满减和折扣价的大小规则)

#include 
#include 
#include 
using namespace std;

int main() {
    int n;
    cin>>n;
    //分别记录原价、折扣价的和
    double sum1=0;
    double sum2=0;
    double a,b;
    for(int i=0;i>a>>b;
        if(b>a || a<=0 || b<=0)
        {
            cout<<"error"<>a>>b;
    if(b>a|| a<=0 || b<=0){
        cout<<"error"<=a) sum1-=b;
    printf("%.2f\n",min(sum1,sum2));
    return 0;
}
// 64 位输出请用 printf("%lld")

2.小美的字符串匹配度

8.29 美团2024届秋招笔试第一场_第3张图片

8.29 美团2024届秋招笔试第一场_第4张图片

小美想知道,s和t的最大字符串匹配度是多少?

输入描述:

8.29 美团2024届秋招笔试第一场_第5张图片

输出描述:输出一个整数——s和t的最大匹配度

8.29 美团2024届秋招笔试第一场_第6张图片

思路:因为t可以选择一次将两个元素互换的机会,要让匹配数最大则要让互换后的两元素尽可能匹配的数量增加。两元素匹配数量:0->2、0->1

代码实现:设定最后返回ret值,遍历两个字符串相等则ret++,不相等则要做记录(以便最后t进行交换元素),我选择了unordered_map进行记录,方便最后判断增加的匹配个数。

#include 
#include 
#include 
using namespace std;

int main() {
    int n,ret=0,exchange_up=0;
    cin>>n;
    string s,t;
    //最后寻找能否交换后增加匹配成功的数量
    //key为未匹配成功的s【i】,val对应未匹配成功s【i】字符的ti总和
    unordered_map m;
    cin>>s>>t;
    for(int i=0;i

你可能感兴趣的:(c++,leetcode,算法)