上课时间 / 地点: H451, 周二 18: 40, 周四 18: 40
本页面链接有效期至 2019 年 12 月 31 日, 期间可能会在本页面通知页面地址变更.
推荐使用 Chrome, Firefox, Safari, Edge 浏览器打开本页, 不推荐使用 QQ 内置浏览器打开.
课堂材料可从本文内下载, 或由学委转载至班群.
更新时间为每周三 21: 00 前和每周五 21: 00 前 (绝赞持续更新中).
第 6 周
周二课堂材料:
建议本周四携带电脑来课堂.
周四课堂材料:
第 7 周
本周加入 分支结构练习题. 有关多组数据的处理方式, 见下例:
输入有多组数据, 每行两个数 \(n, m\), 输出 \(n + m\)
#include <stdlib.h>
#include <stdio.h>
int main(int argc, char** argv)
{
int n, m;
while (scanf("%d%d", &n, &m) != EOF) {
int res = n + m;
printf("%d\n", res);
}
return 0;
}
周二课堂材料:
- 待填坑
本周加入 循环结构练习题. 以下问题可作为思考题:
- A 题能否不用数组, 在 \(O(n)\) 时间,\(O(1)\) 空间内解决?
- B 题是否存在 \(O(1)\) 时间的算法, 即不需要使用循环?
- C 题是否存在 \(O(1)\) 空间的算法?
- [开放问题] D 题是否存在时间复杂度小于 \(O(n)\) 的算法?
- 挑战 \(O(\log n)\) 或 \(O(1)\) 时间复杂度的 H 题解法.
我有一组绝妙的解法, 但是这里地方太小, 写不下了.
随堂练习使用说明
本课程将采用 vjudge 作为随堂练习的托管平台, 你可以在浏览器中输入网址 https://vjudge.net/ 访问 vjudge 主页, 或者在 必应 中 搜索 vjudge
. 我们不推荐使用百度. (逃
如上, 打开 vjudge 主页后, 点击右上角的 Register 注册新用户. 你至少要填写 (由大小写字母、数字和下划线构成的) 用户名、密码、正确的邮箱和验证码共四项. 注意你也许会在未来继续使用这个 vjudge 账号, 所以请不要随意编造用户名, 亦不建议你使用学号作为用户名.
现在请进入你的邮箱, 查看收件箱 (如果没有, 尝试刷新页面或进入垃圾邮件箱), 获取验证邮件, 并如下图所示按照提示将形如红框内链接复制到浏览器中打开 (或直接点开, 如果可以的话).
你应该会被重定向到你的个人主页, 此时邮箱应显示验证成功.
现在, 你拥有了一个可以提交题目的 vjudge 账号了. 你可以先到 题库 中随便逛逛, 或者加入本课程的小组.
打开课程小组的链接 https://vjudge.net/group/hitwh-cs31002-2019, 点击右上角的 Apply Join 按钮申请加入, 等待管理员批准. 管理员批准后, 你的标签会从红色 New Applicant 变成灰色的 Member.
进入课程小组后, 请先在左侧 My Name 处修改自己的备注名称 (它默认是你的用户名) 为 18xxxxxxx-姓名
方便识别. 在 2039 年之前没有修改备注的将会被踢出群组 (大雾
然后你就可以看到比赛了. 注意 “比赛” 的时间很长, 通常会持续数天乃至数周. 在比赛进行的时间内你可以提交解答并很快得到判定 (verdict).
现在可以打开 测试赛, 用来熟悉一下环境:
点击题目 A - 史菜姆, 阅读完题面后, 按照题目要求写完代码, 然后点击左边的 Submit 提交你的代码:
在 Language 里面选择你要提交用的语言. 如果你用的是 GNU 系列的编译器 / IDE (例如 VSCode, Vim, Code:: Blocks, Dev-C++, CLion, Eclipse), 选择 GCC 作为提交语言; 若使用的是 Microsoft Visual Studio (不带 Code), 选择 C 作为提交语言. 如果你使用的是除了 C 以外的语言, 也可根据需求选择其他选项.
在 Solution 内键入你即将提交的代码. Shared 选项开关与否决定你的代码是否会向已经解决这道题的人公开, 并且在比赛结束之前你的代码也一定不会公开. 确定好以上所有选项后, 戳右下角 Submit 提交你的程序.
在 Status 经过 Pending, Submitted, Running&Judging 三个 (或其中的几个, 或其他的) 状态后, 你可以看到自己的程序的运行结果的判定, 具体如下:
- Accepted: 程序正确
- Wrong Answer: 在规定的时间内计算出了一些错误的答案
- Runtime Error: 程序运行出现了错误, 例如访问非法内存等
- Time Limit Exceeded: 没有在规定时间内结束运行
- Memory Limit Exceeded: 使用了超过规定的内存
- Output Limit Exceeded: 输出了过多的内容
- Presentation Error: 输出基本是对的, 但是格式不对
- 以及一些其他的
提交一道题 (或者没提交) 之后, 你可以在 Rank 里面查看榜单, 深绿色代表第一个通过这道题的人, 浅绿色为通过, 红色为提交但是未通过, 蓝色正在判题.
很好! 你现在已经打倒了史菜姆, 完成了新手教程! (大雾