IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 第24次CCF计算机软件能力认证C语言第一题100分题解,第二题70分题解以及经验分享 -> 正文阅读

[C++知识库]第24次CCF计算机软件能力认证C语言第一题100分题解,第二题70分题解以及经验分享

背景介绍:本人是一枚大一新生,听说团体报名csp比赛比个人便宜,(确实,个人报名需要好几百,我们学校团体报名只收50),于是抱着试一试积累经验的心态报名了本次认证。才接触指针就参加比赛了,心想着会是一场“坐牢”,结果竟然做出来一两题,特此发帖分享一下题解和一些经验。

非常抱歉的一件事情是:我没找到题目描述,在csp官网里好像还没有发布。。。(希望有知道的小伙伴可以分享一下)

/*作者:Foge.C
时间:2021.12.05
编译语言:C语言
编译环境:codeblocks*/
#include <stdio.h>
#include <stdlib.h>

int f(int*,int,int);/*函数原型*/

int main()
{/*接受输入*/
    int n,N;
    scanf("%d %d",&n,&N);
    int i=0,A[n+1],sum=0;
    A[0]=0;
    for(i=1;i<n+1;i++)
    {
        scanf("%d",&A[i]);
    }
/*计算值并求和*/
    for(i=1;i<n+1;i++)
    {
        sum+=f(A,n+1,A[i-1])*(A[i]-A[i-1]);
    }
    sum+=f(A,n+1,A[n])*(N-A[n]);
/*显示结果*/
    printf("%d",sum);
    return 0;
}

int f(int arr[],int len,int x)
{/*这个函数用于计算题目中的函数关系*/
    /*arr为数组,len为数组长度,x为自变量*/
    /*返回f(x)的值*/
    int i,ans;
    for(i=0;i<len;i++)
    {
        if(arr[i]<=x)
            ans=i;

    }
    return ans;
}

ps:这里的注释是发帖时加上去的,正式比赛时提交的代码注释是不能含有中文的。

先前做出的题解在计算值并求和那一步用的纯加法,没有把相同的项用乘法做出来,结果只通过了前5个测试点(也就是50分),原因可想而知,算法超时限了,比赛试题有运行时间限制,就像洛谷那样。其实题目中已经提供了相同项用乘法的算法思路,还是比较友善的。改进算法后提交就满分了。

同一道题可以提交多次,最多32次,取得分最高的一次计分,建议是先在编译器上编译好并且自己测试几次再提交到网页上。还有就是建议不要反复提交相同的代码,当时考场上有同学提交后没有立马出测试结果,就反复提交,这种做法是不可取的,因为参加认证的人很多,这个线上测评的服务器反应不过来,反复提交有点浪费资源,相同的代码你提交一次就够了,你也可以多次提交不同算法的代码买个保险。运气好的话,在考试结束前可以看见代码分数和测试点通过与否,看不见也不用担心,考试结束后服务器还是会继续把每一个考生的每一次提交的代码测试并予以评分

这是我第一次提交的50分代码:

/*作者:Foge.C
时间:2021.12.05
编译语言:C语言
编译环境:codeblocks*/
#include <stdio.h>
#include <stdlib.h>

int f(int*,int,int);

int main()
{
    int n,N;
    scanf("%d %d",&n,&N);
    int i=0,A[n+1],sum=0;
    A[0]=0;
    for(i=1;i<n+1;i++)
    {
        scanf("%d",&A[i]);
    }

    for(i=1;i<n+1;i++)
    {
        sum+=f(A,n+1,A[i]);/*此处算法太慢*/
    }


    printf("%d",sum);
    return 0;
}

int f(int arr[],int len,int x)
{
    int i,ans;
    for(i=0;i<len;i++)
    {
        if(arr[i]<=x)
            ans=i;
    }
    return ans;
}

第二题是建立在第一题的基础上,只要你第一题做出来的,第二题加一点东西就行了,但是我是建立在第一题那个50分代码上的,也还是算法超时问题,得了70分。

/*作者:Foge.C
时间:2021.12.05
编译语言:C语言
编译环境:codeblocks*/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int f(int*,int,int);
int g(int,int);/*函数原型*/

int main()
{/*接受输入*/
    int n,N,r;
    scanf("%d %d",&n,&N);
    r=N/(n+1);/*第二题新增的比列系数,公式题目已给出*/
    int i=0,A[n+1],error=0,x=0;
    A[0]=0;
    for(i=1;i<n+1;i++)
    {
        scanf("%d",&A[i]);
    }
/*计算值并求和*/
    for(x=0;x<N;x++)
    {
        error+=abs(g(x,r)-f(A,n+1,x));/*abs()表示求绝对值*/
    }

    printf("%d",error);
    return 0;
}

int f(int arr[],int len,int x)
{/*这是第一题的f(x)函数*/
    int i,ans;
    for(i=0;i<len;i++)
    {
        if(arr[i]<=x)
            ans=i;

    }
    return ans;
}

int g(int x,int r)
{/*这是第二题题目中描述的函数*/
    return x/r;
}

做到这就开始“坐牢”了,后面的题看都看不懂,第三题是一个弄什么417码的,题目描述特长,网页上看得还挺麻烦,我的水平还不会做(同考场的学长大佬已经杀疯了,哈哈)。题目都是比较贴近现实的,是实际可用的,还是比较有意思。

总之,这次csp是一次宝贵的经验,以后有机会还会再尝试一下,趁现在大一,还是新手,好好努力一把,可以冲一冲的。(我就是个混子。。。)

其他想要尝试的小伙伴可以多在洛谷,力扣这些OJ平台上多刷题,多积累算法。一起加油!

有题目的小伙伴可以分享出来哦~(蟹蟹)

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-12-10 10:52:59  更:2021-12-10 10:53:46 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 12:02:42-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码