首页 > 科大讯飞 研发类提前批 笔试
头像
我不想当大白菜
编辑于 2020-07-31 16:58
+ 关注

科大讯飞 研发类提前批 笔试

分析

四道编程题,其中三道难度一般,麻烦的是只能使用C++或JAVA,对Python党很不友好。

1.最少纸币数

从大到小遍历,然后计算整除数和该纸币的个数的小的那个,然后依次向下计算,如果最后剩余钱数的话说明不能完成交换

2.排序

没看明白究竟是啥排序方法,看着像快排但推了一遍感觉又不是

3.矩形相交判断

计算出每个矩形四个点的坐标,然后看这四个点是否在另一个矩形里面

4.字符串处理
  • 注意需要对开头负号的处理

具体代码(不怎么会C++,请多担待: )

  • 1
#include <iostream>
using namespace std;
int _main() {
    int a,b,c,d,e;
    int value;
    int prices[] = {100,50,10,5,1};
    while(cin >> a >> b >> c >> d >> e)// 注意,如果输入是多个测试用例,请通过while循环处理多个测试用例
    {
        cin >> value;
        int nums[] = {e,d,c,b,a};
        int all_cnt = 0;
        for ( int i = 0;i < 5;i++)
        {
            int cur_cnt = value/prices[i];
            if(cur_cnt > nums[i])
                cur_cnt = nums[i];
            value -= cur_cnt*prices[i];
            all_cnt += cur_cnt;
        }
        if(value == 0)
            cout << all_cnt << endl;
        else
            cout << -1 << endl;
    }
}
  • 3
#include <iostream>
#include <vector>
using namespace std;

vector<pair<int,int>> buildRectangle(int x1,int  y1,int x2,int y2){
    vector<pair<int,int>> rectangle;
    rectangle.push_back(make_pair(x1,y1));
    rectangle.push_back(make_pair(x2,y2));
    rectangle.push_back(make_pair(x1,y2));
    rectangle.push_back(make_pair(x2,y1));
    return rectangle;
}


// 判断rect1的四个顶点是不是在rect2的范围内
int solver(vector<pair<int,int>> rect,int x1,int y1,int x2,int y2){
    for (auto p : rect){
        int x = p.first,y = p.second;
        if (x >= x1 && x <= x2 && y >= y1 && y <= y2)
            return 1;
    }
    return 0;
}



int main3() {
    int x1,y1,x2,y2,x3,y3,x4,y4;
    while(cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3 >> x4 >> y4)
    {
        vector<pair<int,int>> rect1 = buildRectangle(x1,y1,x2,y2);
        vector<pair<int,int>> rect2 = buildRectangle(x3,y3,x4,y4);

        if (solver(rect1,x3,y3,x4,y4) || solver(rect2,x1,y1,x2,y2))
            cout << 1 << endl;
        else
            cout << 0 << endl;
    }
}
  • 4
#include <iostream>
using namespace std;
int main_4() {
    string s;
    string res;
    while(cin >> s)
    {
        res = "";
        for (auto c:s)
        {
            if (res.empty() and c == '-')
                res += c;

            if((res.empty() || res=="-") && c=='0')
                continue;

            if(48 <= (int)c && (int)c <= 57)
                res += c;
        }
        cout << res;
    }
}

全部评论

(7) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

近期热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐