信奥实战(一)——顺序结构在购物计算中的应用

信奥实战(一)——顺序结构在购物场景中的应用 本文通过购物场景中的买玉米实例,详细解析了顺序结构在信奥编程中的基础应用。从变量声明、数据输入到计算输出,完整展示了顺序结构的执行流程,并指出常见陷阱如数据类型选择、运算顺序等,帮助初学者掌握这一核心编程概念。 阅读详情

1. 从买玉米到写代码:为什么顺序结构是编程的“第一步”?

大家好,我是老张,一个在编程和AI领域摸爬滚打了十多年的老码农。今天咱们不聊那些高大上的算法模型,就从一个最接地气、每个编程新手都会遇到的问题开始——顺序结构。你可能觉得这个词有点抽象,但说白了,它就是编程世界里最基础、最自然的思维方式:一步一步来。

想象一下,你妈妈让你去楼下超市买几个玉米。她给了你50块钱,爸爸又给了你30块,一个玉米卖4块钱。你心里会怎么算?肯定是先算总共有多少钱(50+30=80),再算能买几个玉米(80÷4=20),最后看看还剩多少钱(80-20*4=0)。这个“先算钱,再算个数,最后算余额”的过程,就是一个标准的顺序执行过程。在编程里,我们把这一连串按部就班的操作,写成一串代码,计算机就会像你一样,老老实实地从上到下,一句一句地执行,这就是顺序结构的精髓。

很多刚接触信息学奥赛(信奥)或者编程的同学,一上来就想搞懂递归、动态规划,心情可以理解,但这就好比还没学会走路就想跑。顺序结构,就是你编程路上的“第一步”。它看似简单,却是构建所有复杂程序的基石。无论是计算购物找零,还是未来要处理的数据排序、图形绘制,底层逻辑都离不开这种线性的、一步接一步的执行顺序。今天,我们就用“小明买玉米”这个超级生活化的例子,手把手带你吃透顺序结构,让你不仅看懂代码,更能自己写出解决类似问题的程序。

2. 拆解“买玉米”问题:把生活逻辑翻译成代码

2.1 问题还原:小明到底遇到了什么?

让我们回到最初的场景,把问题再清晰地捋一遍。题目是这样的:爸爸给了小明 a 元钱,妈妈给了小明 b 元钱,一个玉米的价格是 c 元。我们需要帮小明算两个事:

  1. 他最多能买多少个完整的玉米?
  2. 买完这些玉米后,他还剩下多少钱?

这里有几个关键点需要特别注意,这也是编程思维和纯数学思维开始分叉的地方:

  • “完整的”玉米:这意味着我们只关心能整买的数量,不能买半个或四分之一个玉米。在数学和编程里,这直接指向了整数除法运算。
  • “剩下多少钱”:在算出能买多少个整玉米后,我们需要知道总钱数里有多少没花出去,这对应的是求余数运算。
  • 输入与输出:题目会给我们三个数字:a, b, c。我们的程序需要读入它们,经过计算,然后按照要求,第一行输出玉米个数,第二行输出剩余零钱。

你看,把一个生活问题抽象成编程问题,第一步就是做这样的“翻译”:确定输入是什么,输出是什么,中间的计算规则(算法)又是什么。这个过程本身,就是按照顺序在思考。

2.2 手动计算模拟:像计算机一样思考

在动手写代码前,我们先完全抛开电脑,用纸笔或者心算,严格按照“顺序结构”来模拟一遍。假设输入是 a=3, b=5, c=2。

第一步:计算总金额。 这是最开始的步骤。我们定义一个小本本(在编程里叫“变量”)来记住总钱数。总钱数 = 爸爸给的钱 + 妈妈给的钱。所以,总钱数 = 3 + 5 = 8。这一步绝对不能跳过,也不能放到后面去做,因为后面的所有计算都依赖于这个结果。

第二步:计算最多能买的玉米数量。 现在我们知道总共有8块钱,一个玉米2块钱。要算能买几个,就是 总钱数 ÷ 玉米单价。但是,因为玉米必须完整地买,所以这里用的是整数除法。整数除法会直接舍弃掉小数部分,只保留商的整数部分。8 ÷ 2 = 4,正好整除,所以玉米个数 = 4。如果总钱数是9元,那么 9 ÷ 2 在整数除法里结果就是4(因为4.5的小数部分0.5被舍弃了)。

第三步:计算剩余的零钱。 买了4个玉米,每个2元,一共花掉 4 * 2 = 8 元。那么剩余的钱就是 总钱数 - 花掉的钱 = 8 - 8 = 0。另一种更直接的方法是用求余运算。求余运算就是计算除法后剩下的、不够再买一个完整玉米的钱。8 % 2 = 0(“%”是编程中常用的求余符号),表示8除以2余数为0。

整个流程是线性的、不可逆的:你必须先有总钱数,才能算能买几个;知道了买几个,才能算花了多少钱,最后得出剩余。这个“先做什么,后做什么”的逻辑链条,就是顺序结构要求我们明确刻画出来的。

3. C++代码实现:一行一行看懂你的第一个程序

理解了思路,我们来看代码。下面是用C++语言实现的“买玉米”程序。别怕,我们一行一行拆开看,保证你能懂。

#include <iostream>
using namespace std;

int main() {
    // 第一步:准备“小本本”,记录三个输入数字
    int a, b, c;
    // 第二步:从用户那里(或题目输入)读取三个数字,依次记到小本本上
    cin >> a >> b >> c;

    // 第三步:计算并输出玉米个数
    // (a+b) 是总钱数,除以c(单价),整数除法直接得到个数
    cout << (a + b) / c << endl;

    // 第四步:计算并输出剩余零钱
    // (a+b) 是总钱数,对c(单价)取余数,得到剩下的钱
    cout << (a + b) % c;

    // 程序顺利结束
    return 0;
}

现在,我们来详细解读每一部分:

  • #include <iostream> 和 using namespace std;:这两行算是C++程序的“开场白”。#include <iostream> 是告诉编译器:“我接下来要用到输入(cin)和输出(cout)的功能,请把相关的工具包给我准备好。” using namespace std; 是为了写起来方便,这样我们就可以直接写 cin 和 cout,而不是冗长的 std::cin 和 std::cout。刚开始你暂时可以把它们当作固定格式记住。

  • int main() { ... }:这是每个C++程序的“心脏”,所有你要执行的代码,几乎都写在这对花括号 {} 中间。程序从这里开始运行。

  • int a, b, c;:这是变量声明。int 代表“整数”(integer)。这句话相当于准备了三个名字分别叫 a、b、c 的小本本,专门用来记录整数。爸爸的钱、妈妈的钱、玉米单价,就分别记在这三个本子上。

  • cin >> a >> b >> c;:这是输入语句。cin 可以想象成键盘,>> 是数据流入的方向。整句话的意思是:从键盘(或题目给定的输入渠道)读取三个整数,按顺序依次存放到变量 a、b、c 中。当题目输入“3 5 2”时,执行完这行,a 就变成了3,b 变成了5,c 变成了2。

  • cout << (a + b) / c << endl;:这是第一个输出语句,负责输出玉米个数。

    • cout 可以想象成屏幕,<< 是数据流出的方向。
    • (a + b) / c 是计算表达式。先计算 a+b(得到总钱数8),再执行整数除法 / c(8 / 2),得到结果4。
    • << endl 表示输出一个换行符,这样光标会移到下一行,为输出第二行结果做准备。
  • cout << (a + b) % c;:这是第二个输出语句,负责输出剩余零钱。

    • (a + b) % c 是求余表达式。计算 a+b(8)除以 c(2)的余数,结果是0。
    • 注意这里没有写 endl,所以输出0之后,光标不会自动换行。但题目要求两个结果分两行输出,因为上一个输出有 endl,所以它们自然就在两行了。
  • return 0;:告诉操作系统,程序正常结束了。main 函数前面的 int 表示这个函数最终会返回一个整数,0 通常代表成功。

把程序运行起来,输入“3 5 2”,你就会在屏幕上看到:

4
0

完全符合我们的手动计算和题目要求!这个过程,从输入、计算到输出,严丝合缝地遵循了我们大脑思考的顺序,这就是一个教科书般的顺序结构程序。

4. 举一反三:顺序结构还能解决哪些实际问题?

掌握了“买玉米”这个模板,你会发现顺序结构能处理的生活和竞赛中的简单问题太多了。它的核心就是“线性流程”:先做什么,后做什么,步骤清晰,没有分支和跳跃。下面我多举几个例子,帮你拓宽思路。

4.1 例子一:计算商品打折后的价格

场景:一件衣服原价 price 元,商场打 discount 折(比如8折就是0.8)。计算折后价格,并输出。 思路:

  1. 输入原价 price 和折扣 discount。
  2. 计算折后价:final_price = price * discount。
  3. 输出 final_price。

代码框架:

#include <iostream>
using namespace std;
int main() {
    double price, discount; // 价格和折扣可能有小数,用double
    cin >> price >> discount;
    double final_price = price * discount;
    cout << final_price << endl;
    return 0;
}

你看,依然是“输入-计算-输出”的经典三步走。这里引入了 double 类型来处理小数。

4.2 例子二:交换两个变量的值

这是一个非常经典的编程入门题,也是理解变量和赋值顺序的好例子。 场景:有两个杯子,A杯装可乐,B杯装雪碧。如何交换两个杯子里的饮料?你需要第三个空杯子C。 编程思路:

  1. 定义三个变量 a, b, temp。
  2. 输入 a 和 b 的初始值。
  3. 执行交换:
    • temp = a; // 把a的值(可乐)倒进临时杯子temp
    • a = b; // 把b的值(雪碧)倒进现在空了的a杯
    • b = temp; // 把temp里的值(可乐)倒进现在空了的b杯
  4. 输出交换后的 a 和 b。

代码实现:

#include <iostream>
using namespace std;
int main() {
    int a, b, temp;
    cin >> a >> b;
    temp = a;
    a = b;
    b = temp;
    cout << a << " " << b << endl;
    return 0;
}

这个过程必须严格按顺序进行。如果先执行 a = b,那么a原来的值就丢失了,再也无法正确赋给b。顺序在这里至关重要。

4.3 例子三:计算时间间隔

场景:一场考试从 start_hour 时 start_minute 分开始,到 end_hour 时 end_minute 分结束。考试进行了多少小时多少分钟? 思路:

  1. 输入四个整数:开始小时、开始分钟、结束小时、结束分钟。
  2. 将所有时间统一换算成分钟数:total_start = start_hour * 60 + start_minute;total_end = end_hour * 60 + end_minute。
  3. 计算经过的总分钟数:duration = total_end - total_start。
  4. 将总分钟数转换回小时和分钟:hours = duration / 60(整数除法得小时),minutes = duration % 60(求余得剩下的分钟)。
  5. 输出 hours 和 minutes。

这个例子比前两个稍复杂,涉及多步计算和单位换算,但每一步都依赖于前一步的结果,是典型的顺序结构应用。通过这几个例子,你应该能感受到,顺序结构虽然基础,但它是解决一切计算问题的起点。在信奥的入门题中,大量问题都是这种“直来直去”的计算题,练熟它,你就拿到了打开编程大门的钥匙。

5. 避坑指南与实战技巧:新手常犯的几个错误

在我带过的学生里,即使是顺序结构这么简单的部分,也有几个高频“翻车点”。我把它总结出来,你提前看看,能省下不少调试的时间。

坑一:变量未赋值就使用 这是最经典的错误。比如:

int a, b, sum;
sum = a + b; // 错误!a和b还没装进具体的数字,它们的值是“垃圾值”
cout << sum;

计算机不会自动把 a 和 b 当成0。在声明 int a, b; 之后,你必须通过 cin 或者直接赋值(如 a = 10;)给它们一个明确的值,才能进行运算。正确的做法一定是先输入或赋值,再计算。

坑二:整数除法与浮点数除法的混淆 这是算法逻辑错误的重灾区。回顾买玉米问题,我们要的是完整玉米个数,所以用整数除法 /。但如果你要计算平均价格,就必须用浮点数除法。

int total = 80, count = 3;
int avg_int = total / count; // 结果是26,小数部分被丢弃了
double avg_double = total / count; // 结果仍然是26.0!因为total和count都是int,先进行整数除法
double avg_correct = (double)total / count; // 正确!将total转为double,结果才是26.666...

记住:当两个整数相除时,C++默认进行整数除法,结果只取整数部分。想要得到精确的小数结果,至少要让其中一个操作数变成浮点数(如 double)。

坑三:输出格式不符合题目要求 信奥比赛对输出格式的要求是极其严格的,多一个空格、少一个换行都可能被判错。比如买玉米问题,要求两行输出:

4
0

如果你写成了 cout << (a+b)/c << " " << (a+b)%c;,输出就是 4 0,这是一行,不符合要求。务必仔细读题,看清是空格分隔还是换行分隔。养成使用 endl 或者 "\n" 来明确控制换行的习惯。

坑四:忽略了数据的范围 题目说爸爸给了 a 元,妈妈给了 b 元,但没有说多少钱。如果钱数很大,比如几十亿,用 int 类型可能就装不下了(int 通常有上限,约21亿)。这时就需要用范围更大的 long long 类型。虽然入门题一般不会卡这个点,但建立“根据数据范围选择变量类型”的意识非常重要。看到题目里说“数据范围在1到10^9之间”,就要警惕 int 可能不够用。

实战技巧:如何调试你的第一个程序?

  1. “人脑模拟”调试法:不要急着运行。拿一张纸,把自己当成计算机,手里拿着笔作为“变量存储区”。一行一行地“执行”代码,把每个变量值的变化都写在纸上。对于买玉米程序,就写下 a=3, b=5, c=2,然后计算 (a+b)/c,写下结果4。这个过程能帮你发现大部分逻辑错误。
  2. 输出中间变量:如果你不确定某一步计算对不对,可以在计算前后把相关变量的值打印出来看看。比如,你可以在 cout << (a+b)/c; 之前加一行 cout << "总钱数是:" << a+b << endl;,看看总钱数算对了没。
  3. 使用在线评测系统的“样例测试”:像买玉米这样的题,在信奥学习平台上都有。提交前,一定要用题目给的样例(如输入3 5 2)自己测试一遍,确保输出完全一致(包括空格和换行)。

顺序结构是编程的基石,把它练扎实了,后面遇到选择结构(if语句)和循环结构(for/while循环)时,你才会理解它们是如何嵌入到这个线性框架中,从而构建出更强大的程序逻辑的。从今天起,试着用顺序结构的思维去观察生活中的小计算,比如分摊饭钱、计算行程时间,然后想想怎么用代码实现它。编程,就是这样从解决一个个具体的小问题开始的。

信奥实战(一)——顺序结构在生活场景中的应用 本文通过生活场景实例,深入浅出地讲解了顺序结构在编程中的应用。从超市购物计算器到零花钱分配系统,再到旅行预算规划,展示了顺序结构如何将日常逻辑转化为代码执行流程,帮助初学者理解信奥编程基础。 阅读详情

相关推荐

电商购物篮分析基于Python的改进Apriori算法在中的应用

摘要 随着电子商务的快速发展,海量的交易数据为商家提供了宝贵的信息资源。购物篮分析作为一种有效的数据分析方法,能够帮助商家了解顾客的购买行为模式。本文针对传统Apriori算法在处理大规模数据集时存在的效率低下问题,提出了一种基于Python的改进Apriori算法。通过在连接步和剪枝步引入新的策略,减少候选项集的数量,降低算法的时间复杂度。实验结果表明,改进后的算法在运行效率上有显著提升,能够更快速准确地挖掘出频繁项集,为电商企业制定营销策略提供有力支持。

TtCoffee_2025的博客 2083

打卡信奥刷题(1841)用C++实现信奥 P9313 [EGOI 2021] Shopping Fever / 购物热

本文介绍了EGOI 2021的一道购物优惠问题。海蒂需要购买n件商品,促销活动提供两种优惠:购买≥3件时最便宜的一件免费,或购买<3件时获得q%折扣。文章给出了三个样例说明,并提供了C++解决方案:将商品从贵到便宜排序,使用动态规划计算最小花费。代码中f[i]表示前i件商品的最小花费,通过比较单独购买和批量购买的优惠来更新状态。题目考察了贪心算法和动态规划的应用,适用于算法竞赛训练。

Loge谈信奥--一个专注于信奥人的博客 936

OpenHarmony实战开发-从0到1实现购物应用页面

OpenHarmony ArkUI框架提供了丰富的动画组件和接口,开发者可以根据实际场景和开发需求,选用丰富的动画组件和接口来实现不同的动画效果。

m0_70749039的博客 2189

打卡信奥刷题(1060)用C++实现信奥 P1658 购物

你就要去购物了,现在你手上有N种不同面值的硬币,每种硬币有无限多个。为了方便购物,你希望带尽量少的硬币,但要能组合出1到X之间的任意值。

Loge谈信奥--一个专注于信奥人的博客 1106

ajax在购物车中的应用

代码如下: 购物车页面: 易买网 - 首页          购物车X件登录注册留言后台管理                           首页             图书             百货             品牌             促销                        

卖女孩的小火柴2号 2952

提升购物体验:Shopify Ajax购物车应用实战

Ajax(Asynchronous JavaScript and XML)是一种在无需重新加载整个页面的情况下,能够更新部分网页的技术。通过在后台与服务器进行少量数据交换,Ajax可以使网页实现异步更新,这意味着用户可以进行其他操作而不是等待服务器响应。Ajax技术的工作原理基于以下几个关键概念:XMLHttpRequest对象: 这是Ajax的核心,允许JavaScript向服务器发送异步请求。该对象会处理HTTP请求的发送与接收,能够读取服务器返回的数据。异步处理。

weixin_42466723的博客 1231

打卡信奥刷题(650)用Scratch图形化工具信奥B3796[普及组/提高] [NICA #1] 百货商场

小 A 在百货商场购物,他携带了m元钱。一路上他一共看到了n家店面排成一列,他会一家一家地走过这些店铺。第i家店面的商品需要花费ai​元购买。如果他支付不起这一家店的商品他会直接进入下一家店,否则会支付钱并购买商品后再进入下一家店购物。当他购物完成后,由于他是商场的大会员,他可以获得一些返现。他实际只需支付他购买的所有商品的总价的八八折(向下取整),因此他多支付的那一部分差价将会退还给小 A。请你计算一下小 A 这一次购物能够获得多少的差价退还?

Loge谈信奥--一个专注于信奥人的博客 2832

C# Code-Behind 技术全面解析

Code-Behind 是 ASP.NET Web Forms 中的一种技术模式,通过将用户界面标记(.aspx文件)与程序逻辑代码(.aspx.cs文件)分离,实现表现层与逻辑层的解耦。其核心思想是前端展示与后台逻辑的物理文件分离,通过ASP.NET编译器将两者合并编译成一个Page类并执行。Code-Behind 的优势包括较好的代码组织、较高的开发效率,尤其适合快速开发数据驱动应用。然而,与现代开发模式如ASP.NET MVC、ASP.NET Core和Blazor相比,Code-Behind 在可维

记录学习的过程 958

打卡信奥刷题(1078)用C++实现信奥 P1744 采购特价商品

爱与愁的故事第三弹·shopping》第一章。

Loge谈信奥--一个专注于信奥人的博客 5615

10xGenomics官方可视化工具——Loupe Browser

Loupe Browser是⼀款10xGenomics开发的交互式桌⾯应⽤程序,⽤于探索10x单细胞数据,可以用来找出感兴趣的细胞、找出显著差异表达的基因、鉴定细胞类型、探索细胞亚类和数据共享。

weixin_47195452的博客 3365

FPGA调试利器:VIO与ILA在Vivado中的实战应用指南

本文详细介绍了Vivado中FPGA调试工具VIO与ILA的实战应用技巧。VIO作为虚拟输入/输出工具,可实时调整参数;ILA作为集成逻辑分析仪,能高效捕获内部信号。文章通过具体案例展示了如何配置ILA采样深度、触发条件,以及VIO的动态参数调整功能,帮助开发者提升上板调试效率,解决常见通信失败、数据不同步等问题。

weixin_42553471的博客 424

打卡信奥刷题(614)用Scratch图形化工具信奥B3669[普及组/提高] [语言月赛202210] 购物节

一个商店有两种包装的本子,第一种是单本装,一本x元,第二种是十本优惠装,一套y元。现在商店推出“双十一”活动,每种包装的本子都优惠 1 元,优惠后价格为单本装x−1元,十本装为y−1元。小明想要买n个本子,请问需要花多少钱?注:这里的“恰好”的意义为,不能买少于n个本子,也不能买超过n个本子。

Loge谈信奥--一个专注于信奥人的博客 2321

如何将一个向量投影到一个平面上_线性代数19——投影矩阵和最小二乘

一维空间的投影矩阵  先来看一维空间内向量的投影:  向量p是b在a上的投影,也称为b在a上的分量,可以用b乘以a方向的单位向量来计算,现在,我们打算尝试用更“贴近”线性代数的方式表达。  因为p趴在a上,所以p实际上是a的一个子空间,可以将它看作a放缩x倍,因此向量p可以用p = xa来表示,只要找出x就可以了。因为a⊥e,所以二者的点积为0:  我们希望化简这个式子从而得出x:  x是一个实数...

weixin_39741101的博客 5232

打卡信奥刷题(747)用Scratch图形化工具信奥P4439[普及组/提高] [COCI2017-2018#3] Aron

Aron 为了给他的朋友们买礼物正在礼物店排队,它的前面有n个人。但是它发现有些人是在等待他前面的朋友购买,而并非在排队买单。我们认为紧跟在同一个人身后,穿着同样颜色衣服的人是这个人的朋友。一个人的朋友会在这个人购物后随之离开。现在按照顺序给定排在 Aron 前面的人的衣服的颜色,输出 Aron 还需要等待多少人购物。

Loge谈信奥--一个专注于信奥人的博客 2801

Cadence原理图设计10个高效技巧:从封装绑定到BOM表导出全流程

本文为硬件工程师提供了一套Cadence OrCAD Capture CIS原理图设计的高效实战指南。文章深度解析了从封装库的精准管理与CIS数据库绑定、封装批量处理技巧,到设计缓存清理、跨页信号追踪,再到关键的DRC检查、网表导出以及智能BOM报表生成的全流程核心技巧,旨在帮助工程师提升设计效率与可靠性,规避常见错误。

weixin_29178069的博客 203

希捷硬盘卡死修复实战:U盘启动盘制作与低格清零全流程

机械硬盘使用多年后常出现卡顿、假死、坏道等问题,很多用户在网上搜索“希捷硬盘低格工具”或“U盘硬盘复活器”,却发现要么工具不明,要么操作不当造成二次损伤。其实所谓修复工具,本质是U盘启动环境配合硬盘检测与清零软件,低格并非修复物理坏道,而是通过全盘写零触发主控重映射,隔离不稳定扇区。懂原理后,用官方SeaTools、Ventoy/U盘启动盘、Victoria或Linux dd等组合工具,即可对可抢救的硬盘做清零修复。这一技术适用于逻辑坏道、SMART警告、扇区不稳定等场景,但需先备份数据并判断盘体是否有异响

weixin_30431445的博客 219

打卡信奥刷题(233)用Scratch图形化工具信奥P9412[普及组]「NnOI R1-T1」购物

小 R 是一个喜欢购物的女孩子,她生活在欧艾国中。欧艾国共有n种面值的硬币,它们的面值分别为1a1​a2​a3​⋯an​,且满足ai1​是ai​的倍数。欧艾国只有硬币一种付款方式。欧艾国的商店不支持找零,她在购物时必须支付与价格完全相等的硬币。对于同样的价格,可以有不同的支付方式。例如,如果欧艾国硬币的面值为1元和5元,那么支付7元有两种方式:支付7枚1元硬币,或者支付1枚5元硬币和2枚1元硬币。

Loge谈信奥--一个专注于信奥人的博客 2612

前端使用二开Thingsboard一、二、三事(四)-部件库

以项目实战为基础,逐步介绍前端在thingsboard系统二次开发中的一些注意事项以及一些thingsboard一些页面功能讲解,为前端人员开发使用thingsboard提供一种可靠思路,打造一个完美的物联网系统。

weixin_43163457的博客 743

打卡信奥刷题(091)用C++信奥P1060[普及组/提高] [NOIP2006 普及组] 开心的金明

金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N元钱就行”。今天一早金明就开始做预算,但是他想买的东西太多了,肯定会超过妈妈限定的N元。于是,他把每件物品规定了一个重要度,分为5等:用整数1−5表示,第5等最重要。他还从因特网上查到了每件物品的价格(都是整数元)。他希望在不超过N元(可以等于N元)的前提下,使每件物品的价格与重要度的乘积的总和最大。设第j。

Loge谈信奥--一个专注于信奥人的博客 2170

Test软件:Keysight二次开发_(3).安装与配置开发环境

在开始进行Keysight软件的二次开发之前,首先需要确保您的开发环境已经正确安装和配置。本节将详细介绍如何安装和配置必要的开发工具和依赖项,以便您能够顺利进行开发工作。

2401_87715305的博客 1414

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

打卡信奥刷题(758)用C++信奥P9412[普及组/提高] 「NnOI R1-T1」购物

小 R 是一个喜欢购物的女孩子,她生活在欧艾国中。欧艾国共有n种面值的硬币,它们的面值分别为1a1​a2​a3​⋯an​,且满足ai1​是ai​的倍数。欧艾国只有硬币一种付款方式。欧艾国的商店不支持找零,她在购物时必须支付与价格完全相等的硬币。对于同样的价格,可以有不同的支付方式。例如,如果欧艾国硬币的面值为1元和5元,那么支付7元有两种方式:支付7枚1元硬币,或者支付1枚5元硬币和2枚1元硬币。

Loge谈信奥--一个专注于信奥人的博客 4377

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

打卡信奥刷题(438)用Scratch图形化工具信奥P7621[普及组/提高] [AHOI2021初中组] 超市购物

AHOI2021 初中组 T1春的一天,正是乍暖还寒时候,狂风乍起。小可可裹紧了单薄的外衣,往小雪家中赶去。“今天真不是个出门的时候啊!”小可可感叹道。“但是我还有东西要买……你就陪我去下超市吧?在超市里,小雪一共买了 23.70 元的东西,最后却只付了 20.1 元,小可可见状很疑惑。“超市对学生有优惠呗,最后会打八五折。“那也不可能是这个价啊?我想想……应该是 20.145 元才对。“超市结算的时候最后会去分化整,也就是说,以角作为付钱的最小单位,多的零头就不要了。

Loge谈信奥--一个专注于信奥人的博客 2571

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

打卡信奥刷题(705)用C++信奥P8837[普及组/提高] [传智杯 #3 决赛] 商店

disangan333 想给 disangan233 买一个礼物,于是他和你一起逛商店。

Loge谈信奥--一个专注于信奥人的博客 4162

React Hooks在电商购物车中的实战应用

比如点击"加入购物车"时,只需判断该id是否已存在,存在则数量+1,不存在则新增。比如增减数量的函数依赖当前购物车状态,删除函数则不需要任何依赖。状态更新异步问题:连续快速点击增加按钮时,由于setState的异步性,可能导致数量更新不准确。我最初就是通过平台上的示例项目快速上手的,省去了本地搭建环境的麻烦。这些事件处理函数如果不做优化,每次组件渲染都会创建新函数,可能导致子组件不必要的重渲染。这个平台的一键部署功能真的很方便,不需要自己配置服务器环境,上传代码后几分钟就能生成可访问的在线演示。

BlackironLynx23的博客 752

LocalStorage在电商购物车中的实战应用

通过这个项目,我发现LocalStorage非常适合用来实现电商购物车这类需要持久化但又不需要实时同步的功能。它的简单易用让前端开发变得轻松许多。最近我在InsCode(快马)平台上尝试部署了这个购物车demo,发现它的一键部署功能特别方便。不需要配置复杂的环境,代码上传后就能直接生成可访问的链接,对于展示和测试前端项目来说非常实用。如果你也想快速体验这个购物车功能,不妨试试这个平台。

CrystalwaveEagle34的博客 703

vue基础篇实战总结一:购物车实战

上周看完了vue基础篇 本想继续看 本着基础不牢地动山摇的原则 特地总结重新再写一遍基础篇中实战开发过的一些小东西,以加深熟练度 如果还没有开始vue学习的朋友可以看这本书,还不错 链接:https://pan.baidu.com/s/110W8Rv0ZtxpQdmh3UQNx8A 提取码:qwd1 ok,接下来开始我的总结之路把! 第一个实战: 开发一个购物车 首先,咱们先把长相弄出来(也就...

不断行走的菜鸟的博客 1546
上一篇: 杭州E类人才必看!用软考高项证书解锁购房摇号+子女入学福利(含专利申请指南)
下一篇: Beyond CAD Models: Leveraging NOCS for Category-Level 6D Pose and Size Estimation in Real-World Scen
gitlab7runner
博客等级 码龄4年 78粉丝 1747原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值