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 题目的相关用法有着更深的了解。

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

相关推荐
Jay Kay9 小时前
GVPO:Group Variance Policy Optimization
人工智能·算法·机器学习
Mr_sun.9 小时前
Day09——入退管理-入住-2
android·java·开发语言
Epiphany.5569 小时前
蓝桥杯备赛题目-----爆破
算法·职场和发展·蓝桥杯
MAGICIAN...9 小时前
【java-软件设计原则】
java·开发语言
JH30739 小时前
为什么switch不支持long
java
YuTaoShao9 小时前
【LeetCode 每日一题】1653. 使字符串平衡的最少删除次数——(解法三)DP 空间优化
算法·leetcode·职场和发展
盐真卿10 小时前
python第八部分:高级特性(二)
java·开发语言
茉莉玫瑰花茶10 小时前
C++ 17 详细特性解析(5)
开发语言·c++·算法
上海合宙LuatOS10 小时前
LuatOS核心库API——【audio 】
java·网络·单片机·嵌入式硬件·物联网·音视频·硬件工程
汤姆yu10 小时前
基于springboot的尿毒症健康管理系统
java·spring boot·后端