为了账号安全,请及时绑定邮箱和手机立即绑定

【计算机本科补全计划】CCF计算机职业资格认证 2016-09 试题详解

标签:
C++ 数据结构
正文之前

我要东山再起了!!没错CCF迫在眉睫(其实是我以为报名之后一个月才考,结果报名截止之后一周就考试!(╯‵′)╯︵┻━┻!!!还能好好做朋友吗!!)所以今天火急火燎的就开始写题目了!结果,二十分钟写出第一题,40分钟写第二题结果大错特错,数组全他么越界了!烦躁! 不就是一阵子没用C++了。怎么我现在这么菜!!??!!

正文

1、201609-1

试题编号: 201609-1
试题名称: 最大波动
时间限制: 1.0s
内存限制: 256.0MB
  • 问题描述
      小明正在利用股票的波动程度来研究股票。小明拿到了一只股票每天收盘时的价格,他想知道,这只股票连续几天的最大波动值是多少,即在这几天中某天收盘价格与前一天收盘价格之差的绝对值最大是多少。

  • 输入格式
      输入的第一行包含了一个整数n,表示小明拿到的收盘价格的连续天数。
      第二行包含n个正整数,依次表示每天的收盘价格。

  • 输出格式
      输出一个整数,表示这只股票这n天中的最大波动值。

  • 样例输入
    6
    2 5 5 7 3 5

  • 样例输出
    4

  • 样例说明
    • 第四天和第五天之间的波动最大,波动值为|3-7|=4。
      评测用例规模与约定
    • 对于所有评测用例,2 ≤ n ≤ 1000。股票每一天的价格为1到10000之间的整

我的代码展示:

#include <iostream>
#include <vector>
using namespace std;

int abs(int x)
{
    if(x<0)
        x=-x;
    return x;
}

int main()
{   
    int num;
    cin>>num;
    int x=1,wave=0;
    int pre=0,p=0;
    cin>>pre;
    while(x<num-1)
    {
        cin>>p;
        if(wave<abs(p-pre))
            wave=abs(p-pre);
        pre=p;
        ++x;
    }
    cout<<wave<<endl;

    return 0;
}

运行结果:

Last login: Mon Nov 27 19:39:57 on ttys000
HustWolf:~ zhangzhaobo$ /Users/zhangzhaobo/program/C++/CCF_2016_09_1 ; exit;
6
2 5 5 7 3 5
4
logout
Saving session...
...copying shared history...
...saving history...truncating history files...
...completed.

[进程已完成]


2、 201609-2
试题编号: 201609-2
试题名称: 火车购票
时间限制: 1.0s
内存限制: 256.0MB
  • 问题描述
      请实现一个铁路购票系统的简单座位分配算法,来处理一节车厢的座位分配。
      假设一节车厢有20排、每一排5个座位。为方便起见,我们用1到100来给所有的座位编号,第一排是1到5号,第二排是6到10号,依次类推,第20排是96到100号。
      购票时,一个人可能购一张或多张票,最多不超过5张。如果这几张票可以安排在同一排编号相邻的座位,则应该安排在编号最小的相邻座位。否则应该安排在编号最小的几个空座位中(不考虑是否相邻)。
      假设初始时车票全部未被购买,现在给了一些购票指令,请你处理这些指令。

  • 输入格式
      输入的第一行包含一个整数n,表示购票指令的数量。
      第二行包含n个整数,每个整数p在1到5之间,表示要购入的票数,相邻的两个数之间使用一个空格分隔。

  • 输出格式
      输出n行,每行对应一条指令的处理结果。
      对于购票指令p,输出p张车票的编号,按从小到大排序。

  • 样例输入
    4
    2 5 4 2

  • 样例输出
    1 2
    6 7 8 9 10
    11 12 13 14
    3 4

  • 样例说明
      1) 购2张票,得到座位1、2。
      2) 购5张票,得到座位6至10。
      3) 购4张票,得到座位11至14。
      4) 购2张票,得到座位3、4。

  • 评测用例规模与约定
      对于所有评测用例,1 ≤ n ≤ 100,所有购票数量之和不超过100。

我的答案代码~~


#include <iostream>
using namespace std;

void BuyTicket(int a[20][5],int Tickets)
{
    int (*p)[5]=a;
    bool flag=false;
    for(int i=0;i<20;++i)
    {
        int *q=*p;
        if(q[5-Tickets]==0)
        {
            for(int z=0;z<5;++z)
            {
                if(q[z]==0 && Tickets!=0)
                {
                    q[z]=1;
                    --Tickets;
                    cout<<5*i+z+1<<" ";
                }
            }
            cout<<endl;
            flag=true;
            break;
        }
        ++p;
    }
    if(!flag)
    {
        int (*m)[5]=a;
        for(int i=0;i<20;++i)
        {
            int *q=*m;
            for(int n=0;n<5;++n)
            {
                if(q[n]==0 && Tickets!=0)
                {
                    q[n]=1;
                    --Tickets;
                    cout<<5*i+n+1<<" ";
                }
            }
        }

    }

}

int main()
{
    int num,Tickets;
    int a[20][5];
    for(int i=0;i<20;++i)
        for(int j=0;j<5;++j)
            a[i][j]=0;
    cin>>num;
    for(int i=0;i<num;++i)
    {
        cin>>Tickets;
        cout<<i+1<<" : ";
        BuyTicket(a,Tickets);
    }
    cout<<"\n=============\n\n";
    for(auto p=begin(a);p!=end(a);++p)
    {   
        for(auto q=begin(*p);q!=end(*p);++q)
        {
            if(*q!=0)
                cout<<"* | ";
        }
        cout<<endl;
    }
    return 0;
}

运行结果:

Last login: Mon Nov 27 23:19:39 on ttys000
HustWolf:~ zhangzhaobo$ /Users/zhangzhaobo/program/C++/CCF_2016_09_2 ; exit;
24
1 2 4 5 2 3 4 1 2 4 5 2 3 4 1 2 4 5 2 3 4 1 2 4 5 2 3 4 
1 : 1 
2 : 2 3 
3 : 6 7 8 9 
4 : 11 12 13 14 15 
5 : 4 5 
6 : 16 17 18 
7 : 21 22 23 24 
8 : 10 
9 : 19 20 
10 : 26 27 28 29 
11 : 31 32 33 34 35 
12 : 36 37 
13 : 38 39 40 
14 : 41 42 43 44 
15 : 25 
16 : 46 47 
17 : 51 52 53 54 
18 : 56 57 58 59 60 
19 : 48 49 
20 : 61 62 63 
21 : 66 67 68 69 
22 : 30 
23 : 64 65 
24 : 71 72 73 74 

=============

* | * | * | * | * | 
* | * | * | * | * | 
* | * | * | * | * | 
* | * | * | * | * | 
* | * | * | * | * | 
* | * | * | * | * | 
* | * | * | * | * | 
* | * | * | * | * | 
* | * | * | * | 
* | * | * | * | 
* | * | * | * | 
* | * | * | * | * | 
* | * | * | * | * | 
* | * | * | * | 
* | * | * | * | 

logout
Saving session...
...copying shared history...
...saving history...truncating history files...
...completed.

[进程已完成]

善做主张加了点东西,好看了不少,不然就那逼样,实在是美观欠奉啊!~~

正文之后

今天先日两题,待会看看第三题能不能再12点之前做出来,明早还有神奇的有限元课~~ 想想真是让人绝望啊啊!空气突然冰冷~

点击查看更多内容
4人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消