科大讯飞笔试四道题(100%,0 , 100%,85%)

第一题,硬币找零,最少多少张纸币   100%

有面值1,5,10,50,100,分别对应变量:a、b、c、d、e
若有k元钱,最少多少张纸币能找零,若不能则输出-1
贪心:从大到小遍历一遍,注意给定币值数量判断
#include<bits/stdc++.h>

using namespace std;

int main()
{
    int a,b,c,d,e;
    int k;

    cin >> a >> b >> c >> d >> e;
    cin >> k;

    int res = 0;

    if(k >= 100 && e) {
        int s = k/100;
        if(s <= e) {
            res += s;
            k = k%100;
        } else {
            res += e;
            k = k - (e * 100);
        }
    }

    if(k >= 50 && d) {
        int s = k/50;
        if(s <= d) {
            res += s;
            k = k%50;
        } else {
            res += d;
            k = k - (d * 50);
        }
    }

    if(k >= 10 && c) {
        int s = k/10;
        if(s <= c) {
            res += s;
            k = k%10;
        } else {
            res += c;
            k = k - (c * 10);
        }
    }

    if(k >= 5 && b) {
        int s = k/5;
        if(s <= b) {
            res += s;
            k = k%5;
        } else {
            res += b;
            k = k - (b * 5);
        }
    }

    if(k <= a)
        cout << res+k;
    else
        cout << -1;
    return 0;
}


第二题:排序题    未做


第三题:矩形是否相交  100%

给定坐标:(0,0),(2,3),(1,2),(5,4)
判断前两个点对角线构成的矩形是否与后两个点构成的矩形相交
相交则输出1,否则输出0

直接输出:1   过了65%
直接模拟判断出为0的情况:
第二个矩形两个点的横坐标同时大于第一个矩形第二个点的横坐标为不相交
第二个矩形两个点的横坐标同时小于第一个矩形第一个点的横坐标为不相交
第二个矩形两个点的纵坐标同时大于第一个矩形第二个点的纵坐标为不相交
第二个矩形两个点的坐标同时小于第一个矩形第一个点的坐标为不相交

否则输出1即可
#include<bits/stdc++.h>

using namespace std;

int main()
{
    //矩形1
    int x1,y1,x2,y2;
    //矩形2
    int a1,b1,a2,b2;

    cin >> x1 >> y1 >> x2 >> y2;
    cin >> a1 >> b1 >> a2 >> b2;

    if(b1 > y2 && b2 > y2)
        cout << 0;
    else if(b1 < y1 && b2 < y1)
        cout << 0;
    else if(a1 > x2 && a2 > x2)
        cout << 0;
    else if(a1 < x1 && a2 < x1)
        cout << 0;
    else
        cout << 1;
    return 0;
}



第四题:字符串中提取整数    85%

例如:+1a2
输出:12

例如:-1a2
输出:-12

简单模拟,没过,可能有特殊数据未考虑到


#科大讯飞笔试##笔试题目##科大讯飞#
全部评论
四道AC
6 回复 分享
发布于 2020-07-31 16:02
100 100 100 85 第二题快速排序。 //划分一次就输出整个数组 int  part(vector<int>&nums, int left, int right,int n){     int prv = nums[left];     int s = left;     left++;     while(left <= right){           while(right>=left&&nums[right]>= prv){             right--;         }                  while(left<=right && nums[left]< prv){             left++;         }                  if(right < left) break;         swap(nums[left],nums[right]);     }     swap(nums[s], nums[right]);          for(int i = 0; i< n;i++){         if(i == n-1){             cout<<nums[i]<<endl;         } else cout<<nums[i]<<" ";     }     return right; } void helper1(vector<int>& nums, int left, int right, int n){     if(right<0) return ;     if(left>=n ) return;     if(left>=right) return ;     int mid = part(nums, left, right, n);     helper1(nums, left, mid-1, n);     helper1(nums, mid+1, right, n); }
3 回复 分享
发布于 2020-07-31 15:56
我排序不会  剩下都100
1 回复 分享
发布于 2020-07-31 15:28
第四个题需要按行输入,所以空格也要进行判断 还有+0 -0 000 都要变为0
1 回复 分享
发布于 2020-07-31 15:46
100  0   67  57  我还有机会吗🙃
1 回复 分享
发布于 2020-07-31 15:48
100 60 100 100
1 回复 分享
发布于 2020-07-31 15:53
为啥我的快排跟他的不一样
1 回复 分享
发布于 2020-07-31 16:00
100 20 100 100 求面试(你看我还有机会吗.jpg)
1 回复 分享
发布于 2020-07-31 16:00
0AC 你看我还有希望吗
1 回复 分享
发布于 2020-07-31 19:32
四道题全部AC。。。。。运气好,第一道题一眼看上去是背包问题,用动态规划,想了想不会做调过来,后面三题做完回头看第一题发现题目条件比较特殊,直接暴力求解简单还高效
1 回复 分享
发布于 2020-07-31 20:55
第四道:输入while,防止回车空格等。取0 < num < 9或 num == - 。输出头 - 或 大于0,中间不能有‘-’
1 回复 分享
发布于 2020-07-31 22:10
转载:第二题 int q_sort_process(vector<int>& v, int left, int right) {     int l = left + 1;     int r = right - 1;     while (l <= r) {         while (v[l] <= v[left] && l <= r) {             l++;         }         while (v[r] >= v[left] && l <= r) {             r--;         }         if (l <= r) {             swap(v[l], v[r]);         }     }       swap(v[r], v[left]);     for (int i = 0; i < v.size(); i++) {         cout << v[i] << " ";     }     cout << endl;     return r; } void q_sort(vector<int> &v,int left,int right) {     if (left + 1 < right) {         int mid = q_sort_process(v, left, right);         q_sort(v, left, mid);         q_sort(v, mid+1, right);     } } int main() {     int n;     while (cin >> n) {         vector<int> v(n, 0);         for (int i = 0; i < n; i++) {             cin >> v[i];         }         q_sort(v, 0, n);     }     return 0; }
1 回复 分享
发布于 2020-08-01 11:21
100 100 0 87
点赞 回复 分享
发布于 2020-07-31 15:50
求第一题代码
点赞 回复 分享
发布于 2020-07-31 15:51
100 20 100 100 第二题服了,啥玩意啊
点赞 回复 分享
发布于 2020-07-31 15:52
100 20 100  100
点赞 回复 分享
发布于 2020-07-31 15:52
100 0 83 71 第二题看不明白,开始以为插入排序 半天想不出来就放弃了 第三题就是判断横纵坐标是否相交,结果不知道为什么83%??人晕了 第四题开始输出71 我以为是前面有0的情况,后面把前面的0删了,然后增加了int的取值范围,结果还是71。结束的时候想了下估计是前面的-号的情况,不过没时间做了 就罢了
点赞 回复 分享
发布于 2020-07-31 15:58
ac 60 20 83 57
点赞 回复 分享
发布于 2020-07-31 16:00
楼主你的通过率和我好相似,我是100,20,100,85,第二题复制给的案例过了20%,超搞笑
点赞 回复 分享
发布于 2020-07-31 16:02
100&nbsp;60&nbsp;100&nbsp;100
点赞 回复 分享
发布于 2020-07-31 16:03

相关推荐

shtdbb_:还不错,没有让你做了笔试再挂你
点赞 评论 收藏
分享
9 65 评论
分享
牛客网
牛客企业服务