科大讯飞编程题 2018 课程冲突

科大讯飞编程题
 发布于 今天 16:34   1695 次浏览   0 赞   来自 我要提问   

科大讯飞 2018校招 技术综合方向试卷在线考试

编程题|20.0分3/3

课程冲突

时间限制:C/C++语言 2000MS;其他语言 4000MS
内存限制:C/C++语言 65536KB;其他语言 589824KB

题目描述:

小明是一名学生,又到了学校的选课时间,他想选一些课程学习,已知课程开课时间都在每周一到周五之内,早上4讲课,下午4讲课,晚上2讲课。

小明担心选课时间上有所冲突。所以他希望可以对课程时间进行检查。

输入

首先输入一个整数n(0

之后输入n行选课信息,每行选课信息有2个数字。

第一个数字表示开课时间,开课时间用2位数表示,前一位用0到4表示周一至周五,后一位用0到9表示从早到晚顺序第几讲课,如12表示礼拜二第三讲课。01表示礼拜一第二讲课。

每行第二个数字表示课程代码,如:204521。课程代码为6位数字。输入课程代码均不重复。

样例输入

5

01 204521

23 204523

22 204526

01 204528

22 204527

样例输出

01 204521 204528

22 204526 204527


Hint

Input Sample 2
3
11 204521
23 204522
43 204531

Output Sample 2
YES







#include
#include
#include

using namespace std;

struct mp
{
public:
    mp(int n, int m){
        xy = n;
        x = n/10;
        y = n % 10;
        z = m;
    }
    int xy;
    int x;
    int y;
    int z;
};

int main()
{
    int n;
    cin >> n;
    vector stu;
    for (int i = 0; i < n; i++)
    {
        int x, y;
        cin >> x >> y;
        stu.push_back(mp(x, y));
    }
    vector data[59];//最多五天每天10节课
    for (int i = 0; i < stu.size(); i++)
    {
        data[stu[i].xy].push_back(stu[i]);
    }
    int result = 0;
    for (int j = 0; j < 59; j++)
    {
        if (data[j].size() >= 2)
        {
            result = 1;
            if (data[j][0].x==0)
                cout <<0<< data[j][0].y << " ";
            else
                cout << data[j][0].xy << " ";
            int jj = 0;
            for (jj = 0; jj < data[j].size()-1; jj++)
            {
                cout << data[j][jj].z << " ";
            }
            if (jj = data[j].size() - 1)
                cout << data[j][jj].z << endl;
        }
    }
    if (result == 0)
        cout << "YES" << endl;
    system("pause");
    return 0;
}


第二种方法,其实不算是第二种,当时理解错了,把天和课时分开处理的。。。。。。




#include

#include
#include

using namespace std;

struct mp
{
public:
    mp(int n, int m){
        xy = n;
        x = n/10;
        y = n % 10;
        z = m;
    }
    int xy;
    int x;
    int y;
    int z;
};


int main()
{
    int n;
    cin >> n;
    vector stu;
    for (int i = 0; i < n; i++)
    {
        int x, y;
        cin >> x >> y;
        stu.push_back(mp(x, y));
    }
    vector day[5];
    vector time[5][10];
    for (int i = 0; i < n; i++)
    {
        day[stu[i].x].push_back(stu[i]);
    }
    for (int i = 0; i < 5; i++)
    {
        if (day[i].size() >= 2)
        {
            int j = 0;
            while (j < day[i].size())
            {
                time[i][day[i][j].y].push_back(day[i][j]);
                j++;
            }
        }
        
    }
    int result = 0;
    for (int i = 0; i < 5; i++)
    {
        for (int j = 0; j < 10; j++)
        {
            if (time[i][j].size() >= 2)
            {
                result += time[i][j].size();
                if (time[i][j][0].x==0)
                    cout <<0<< time[i][j][0].y << " ";
                else

                    cout << time[i][j][0].xy << " ";
                int jj = 0;
                for ( jj = 0; jj < time[i][j].size()-1; jj++)
                {
                    cout << time[i][j][jj].z << " ";
                }
                cout << time[i][j][jj].z << endl;
                
            }
        }
    }
    if (result == 0)
    {
        cout << "YSE" << endl;
    }

    system("pause");
    return 0;
}

你可能感兴趣的:(C++)