OJ 题目的做题模式和相关报错情况

🔭 个人主页: 散峰而望

《C语言:从基础到进阶》《编程工具的下载和使用》《C语言刷题》《算法竞赛从入门到获奖》《人工智能》《AI Agent》
愿为出海月,不做归山云


🎬博主简介

OJ 题目的做题模式和相关报错情况

  • [1. 做题模式 -- ACM 模式和核心代码模式](#1. 做题模式 -- ACM 模式和核心代码模式)
    • [1.1 ACM 模式](#1.1 ACM 模式)
    • [1.2 核心代码模式](#1.2 核心代码模式)
  • [2. 报错情况](#2. 报错情况)
    • [2.1 牛客](#2.1 牛客)
      • [2.1.1 编译错误](#2.1.1 编译错误)
      • [2.1.2 答案错误](#2.1.2 答案错误)
      • [2.1.3 通过部分用例](#2.1.3 通过部分用例)
      • [2.1.4 运行超时](#2.1.4 运行超时)
    • [2.2 洛谷](#2.2 洛谷)
      • [2.2.1 编译错误](#2.2.1 编译错误)
      • [2.2.2 洛谷WA(wrong answer)](#2.2.2 洛谷WA(wrong answer))
      • [2.2.3 洛谷部分用例通过](#2.2.3 洛谷部分用例通过)
      • [2.2.4 程序运行时出现运行时问题](#2.2.4 程序运行时出现运行时问题)
          • [2.2.4.1 段错误提示](#2.2.4.1 段错误提示)
          • [2.2.4.2 除数为0的提示](#2.2.4.2 除数为0的提示)
      • [2.2.5 超时](#2.2.5 超时)
  • 结语

1. 做题模式 -- ACM 模式和核心代码模式

1.1 ACM 模式

ACM 模式一般是竞赛和笔试面试常用的模式,就是只给你一个题目描述,外加输入样例和输出样例,

不会给你任何的代码。此时,选手或者应聘者需要根据题目要求,自己完成如下任务:

  1. 头文件的包含
  2. mai 函数的设计
  3. 自己定义程序所需的变量和容器(数组、链表、哈希表、字符串等等)
  4. 数据的输入(根据题目叙述控制输入数据的格式)
  5. 数据的处理(各种函数接口的设计)
  6. 数据的输出(根据题目叙述控制返回数据的格式)

总而言之,ACM 模式相当于给你一个空白的代码框,让你自己设计程序来解决问题。

例如: 洛谷平台上一道算法题 --- 地毯

题目要求:

提交页面:

参考代码:

cpp 复制代码
#include <iostream>
using namespace std;
const int N = 1010;
int n, m;
int f[N][N]; // 差分矩阵 
// 差分数组的性质 
void insert(int x1, int y1, int x2, int y2, int k)
{
    f[x1][y1] += k; f[x1][y2 + 1] -= k; f[x2 + 1][y1] -= k; f[x2 + 1][y2 + 1] += k;
}
int main()
{
    cin >> n >> m;
    // 构建差分数组 
    while(m--)
    {
        int x1, y1, x2, y2; cin >> x1 >> y1 >> x2 >> y2;
        insert(x1, y1, x2, y2, 1);
    }
    // 利用前缀和还原修改之后的数组 
    for(int i = 1; i <= n; i++)
    {
        for(int j = 1; j <= n; j++)
        {
            f[i][j] = f[i - 1][j] + f[i][j - 1] - f[i - 1][j - 1] + f[i][j];
            cout << f[i][j] << " ";
        }
        cout << endl;
    }
    return 0;
}

1.2 核心代码模式

核心代码模式仅仅甩给你一个函数,我们仅需完成这个函数的功能即可。在你完成这个函数之后,后台会调用你所写的函数,进行测试。

因此,这种情况下,我们只需完成核心的函数接口,无需考虑数据的输入和输出。

例如: leetcode 上一道简单的核心代码模式的题 --- 移除元素

题目要求:

提交页面:

参考代码:

c 复制代码
int removeElement(int* nums, int numsSize, int val) {
    //先创建两个变量
        int src, dst;
        src = dst = 0;
        while(src < numsSize)
        {
            if(nums[src] == val)
            {
                src++;
            }
            else
            {
                //赋值,两指针++
                nums[dst] = nums[src];
                dst++;
                src++;
            }
        }
        //此时dst的值刚好就是新数组的有效长度
        return dst;
}

2. 报错情况

这里展示牛客 和洛谷的相关报错情况,洛谷相关报错情况网站讲解的比较细就不在这里描述了。

2.1 牛客

牛客给的报错信息也是比较详细的,这里简单例举一下。

2.1.1 编译错误

2.1.2 答案错误

2.1.3 通过部分用例

2.1.4 运行超时

可能性: 代码中出现了死循环,代码的算法复杂度确实是过高,太耗时。
解决办法: 检查代码、优化程序。

2.2 洛谷

2.2.1 编译错误

刷新一下就能看到编译错误的信息:

2.2.2 洛谷WA(wrong answer)

这说明代码运行结果和预期不符,答案是错误的.

2.2.3 洛谷部分用例通过

一个题目可能有多个测试用例,有部分测试用例通过,但是也有部分测试用例未通过,基本的原因是代码考虑不周全。这种情况是最经常遇见的情况。

2.2.4 程序运行时出现运行时问题

这种场景代码是程序编译没有语法问题,编译产生了可执行程序,程序运行时出现了问题,比如:段错误、除数为 0 等。

2.2.4.1 段错误提示
2.2.4.2 除数为0的提示

2.2.5 超时

可能得的原因:

  1. 代码中不小心,造成死循环了
  2. 代码中算法复杂度太高,太耗时

结语

希望读完此片各位朋友对 OJ 题目的相关用法有着更深的了解。

愿诸君能一起共渡重重浪,终见缛彩遥分地,繁光远缀天。

相关推荐
旖旎夜光22 分钟前
【C++ 基础入门】命名空间、输入输出、缺省参数与函数重载
开发语言·c++·笔记·学习
Escalating_xu1 小时前
【Linux 网络编程】五种 I/O 模型与非阻塞 I/O:从“等数据”到正确处理 EAGAIN
java·linux·网络
程序猿乐锅1 小时前
万字详解Single-flight(单飞模式)
java·开发语言·分布式·后端·学习·single-flight
扶尔魔ocy1 小时前
【QT入门到晋级】用开源的自定义控件开发
c++·qt·自定义控件
AiNightVision1 小时前
无人机夜视模块如何选择?——从参数指标到系统集成的完整选型指南
人工智能·算法·计算机视觉·车载系统·无人机·视频·智能硬件
Java后端的Ai之路2 小时前
【AIAgent开发】-Agent工具封装成CLI(纯干货!!!)
java·javascript·人工智能·agent·cli
AntsData2 小时前
用 12K+ 条亚马逊评论信号,定位机械键盘下一版该改什么
java·大数据·计算机外设
code2cat2 小时前
【随笔】连续批处理:长短请求怎样在迭代之间补位
java·人工智能·后端·大语言模型·vllm
最强小杰2 小时前
DeepSeek V4 Flash + Codex CLI 接入教程:原生 Responses API 适配,从配置到跑通收藏这篇就够了(2026)
java·前端·python·ai
牧羊人.3332 小时前
卷积神经网络之VGG
人工智能·深度学习·神经网络·算法·cnn