瞎猫碰见死耗子

#include<bits/stdc++.h>
using namespace std;
int main(){
    int N,M=0;
    cin>>N;
    //品牌单价A1元,B2/3元,C3元,D0.2元,E1.25元,F2/3元,排序DFBAEC
    int price[6]={1,2,2,2,5,3};
    int number[6]={5,3,3,2,4,1};
    for(int i=0;i<6;i++){
        if(N>=price[i]){
            N-=price[i];
            M+=number[i];
        }
    }
    cout<<M;
    return 0;
}

奇安信第一题看上去很简单,就简单粗暴的解法但只通过了80%,但把
number[6]={5,3,3,2,4,1}改成number[6]={5,3,3,2,4,2}
就AC了,问监考官他说题目没问题,叫我注意审题,我寻思着反正A了就不管了😂
经牛友指点发现剩余5~6块的时候应该优先选5块钱4个口罩的,但我把3块钱1个的改成了3块钱两个,结果上也是(2+3)元买(2+2)个,数据上姑且算蒙对了😂
#奇安信##笔试题目#
全部评论
你会发现,是代码有问题,当你钱数为10的时候之前是14,之后是15因为会退一个2元加一个五元进去
2 回复
分享
发布于 2020-03-28 20:40
用贪心,每次都取收益比率最高的规格,过80。特殊情况是10块钱和11块钱,剩5块和6块的时候要选4个口罩5块钱的规格,考虑进去之后ac了
1 回复
分享
发布于 2020-03-28 20:38
联易融
校招火热招聘中
官网直投
最后剩5块钱的时候,直接买4个,而不是先买2块钱的两个,顺序调一下{5,3,3,4,2,1}应该就过了
1 回复
分享
发布于 2020-03-28 20:38
你怎么想到把1改成2的。。
点赞 回复
分享
发布于 2020-03-28 20:24
我和你的做法一样,也是80%
点赞 回复
分享
发布于 2020-03-28 20:25
监考官是什么?
点赞 回复
分享
发布于 2020-03-28 20:27
投的什么岗啊,咋这么简单😆
点赞 回复
分享
发布于 2020-03-28 20:27
懂了,剩余5~6块的时候选5块钱4个口罩的,但我把3块钱1个的改成了3块钱两个,结果也是(2+3)元买(2+2)个,数据上姑且算蒙对了😂
点赞 回复
分享
发布于 2020-03-28 20:46
难得笔试做出两道题,
点赞 回复
分享
发布于 2020-03-28 20:56
public class Main {     public static void main(String[] args) {         Scanner in  = new Scanner(System.in);         int n = in.nextInt();         int[] dp = {0,0,5,8,8,11,11,13,13,13,15,15,17,17,17};         System.out.println(dp[n]);     } } 🤣
点赞 回复
分享
发布于 2020-03-28 21:01
用背包就好了,也不是很难
点赞 回复
分享
发布于 2020-03-28 22:10
我用了背包,0%。都挺好
点赞 回复
分享
发布于 2020-03-28 22:28
01背包问题,ac
点赞 回复
分享
发布于 2020-03-29 17:14
我只想说我做完笔试自我感觉良好,两道编程都AC了,选择也凑合....但就是,考完一周多了,没任何反映...所以 这都凉了?
点赞 回复
分享
发布于 2020-04-04 13:57

相关推荐

1 1 评论
分享
牛客网
牛客企业服务