定义在mian函数之外的数组的自动初始化

【题目描述】

开灯问题。有n盏灯,编号为1~n。第1个人把所有灯打开,第2个人按下所有编号为2的倍数的开关(这些灯将被关掉),第3个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,开着的灯将被关闭),依此类推。一共有k个人,问最后有哪些灯开着?输入n和k,输出开着的灯的编号。k≤n≤1000。

【样例输入】

7 3

【样例输出】

1 5 6 7

【题目来源】

刘汝佳《算法竞赛入门经典  第2版》程序3-2 开灯问题

【解析】

问题看似复杂,但有了数组这把利刃,解决起来非常容易,只需要用a[i]表示第i盏灯是否开着即可。a[i]=1表示开,a[i]=0表示关。

原书代码:

#include<stdio.h>
#include<string.h>
#define maxn 1010
int a[maxn];
int main(){int n, k, first = 1;memset(a, 0, sizeof(a));scanf("%d%d", &n, &k);for(int i = 1; i <= k; i++)for(int j = 1; j <= n; j++)if(j % i == 0) a[j] = !a[j];for(int i = 1; i <= n; i++)if(a[i]) { if(first) first = 0; else printf(" "); printf("%d", i); }printf("\n");return 0;
}

代码说明:

1.用memset将数组清0这个操作是没有必要的,删掉这行代码依然可以完美运行。因为定义在main函数之外的数组如果没有显式初始化,它的元素会被自动初始化为0。因为算法竞赛基本都要把数组定义在main函数之外,所以不用考虑数组初始化的问题。

提醒:定义在main函数之内的数组并不会被自动初始化为0,这时候用memset就有必要了。

2.模拟开关灯的双层循环中的i表示第i个人,j表示第j盏灯,这就需要有一条if语句来判断是否要操作开关。其实根据题意可知,要操作的开关就是i的倍数,所以可以直接定义j为要操作开关的灯的编号,这样就不用增加if语句了。循环部分改后代码如下:

for(int i=1; i<=k; i++){for(int j=i; j<=n; j+=i){ //j为要操作开关的灯的编号a[j] = !a[j];}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/818543.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity Shader 流光 边缘光

前言 Unity2021.3.23 一、实现原理 Time控制UV的变化,再采样一张流光贴图.即可实现流光效果。 二、效果及源码展示 1.流光效果 效果描述: 1.边缘光(菲尼尔), 2.从上到下扫描光. 效果图如下: 代码如下: Shader "Unlit/ScanCode" {Properties{_MainTex ("T…

JavaEE企业开发新技术5

目录 2.18 综合应用-1 2.19 综合应用-2 2.20 综合应用-3 2.21 综合应用-4 2.22 综合应用-5 Synchronized &#xff1a; 2.18 综合应用-1 反射的高级应用 DAO开发中&#xff0c;实体类对应DAO的实现类中有很多方法的代码具有高度相似性&#xff0c;为了提供代码的复用性,降低…

MoneyPrinterTurbo-利用AI大模型,一键生成高清短视频

MoneyPrinterTurbo-利用AI大模型&#xff0c;一键生成高清短视频 在今天的信息爆炸的时代&#xff0c;短视频已经成为最受欢迎的信息传递方式之一。无论是分享生活瞬间&#xff0c;还是传递重要信息&#xff0c;短视频都是最直观&#xff0c;最具影响力的手段。但是&#xff0…

SpringBoot:正常启动,Controller 无法访问

一、server.servlet.context-path配置的作用 定义&#xff1a; server.servlet.context-path # Context path of the application. 应用的上下文路径&#xff0c;也可以称为项目路径&#xff0c;是构成url地址的一部分。 server.servlet.context-path不配置时&#xff0c;默认…

问题 E: 实验11_9_链表归并

题目描述 已知有两个递增的正整数序列A和B&#xff0c;序列中元素个数未知&#xff0c;同一序列中不会有重复元素出现&#xff0c;有可能某个序列为空。现要求将序列B归并到序列A中&#xff0c;且归并后序列A的数据仍然按递增顺序排列。如果序列B中某些数据在序列A中也存在&am…

微软 SDL 安全研发生命周期详解

微软SDL&#xff08;Security Development Lifecycle&#xff09;是一种安全软件开发的方法论&#xff0c;它强调在整个产品开发过程中融入安全考虑因素。SDL 是一个动态的过程&#xff0c;包括多个阶段和活动&#xff0c;以确保产品的安全开发、测试、部署和运行。Microsoft 要…

11.哀家要长脑子了!

目录 1.453. 最小操作次数使数组元素相等 - 力扣&#xff08;LeetCode&#xff09; 2.665. 非递减数列 - 力扣&#xff08;LeetCode&#xff09; 3. 283. 移动零 - 力扣&#xff08;LeetCode&#xff09; 4. 3114. 替换字符可以得到的最晚时间 - 力扣&#xff08;LeetCode…

说说我理解的数据库中的Schema吧

一、SQL标准对schema如何定义&#xff1f; ISO/IEC 9075-1 SQL标准中将schema定义为描述符的持久命名集合&#xff08;a persistent, named collection of descriptors&#xff09;。 大部分的网上资料定义Schema如下&#xff1a; schema是用来组织和管理数据的一种方式。它…

activiti7.0集成人大金仓数据库

说明 人大金仓数据库和mysql数据库比较相似&#xff0c;部分语法也类似。activiti中默认集成的是mysql数据源&#xff0c;而且并没有集成过人大金仓数据库。所以想要集成人大金仓数据库就要将该类的的数据源配置到其中去。这里的思路就是在流程引擎初始化数据库datasource的时…

对中小企业来说,一次的勒索事件有可能造成致命的伤害

勒索攻击越来越频繁 去年的勒索事件数据呈现出显著的增长趋势。具体来说&#xff0c;全球范围内的勒索软件攻击活动愈演愈烈&#xff0c;受害者数量创下历史新高&#xff0c;同比增长了46%。 例如&#xff0c;2023年伊始&#xff0c;英国皇家邮政成为了勒索团伙LockBit的大型…

QT 使用redis ,连接并使用

一.redis安装 链接&#xff1a;https://pan.baidu.com/s/17fXKOj5M4VIypR0y5_xtHw 提取码&#xff1a;1234 1.下载得到文件夹如图 course_redis为安装包。 2.启动Redis服务 把安装包解压到某个路径下即可。 打开cmd窗口&#xff0c;切换到Redis安装路径&#xff0c;输入 r…

LLM激活稀疏性加速

相关工作 Deja vu Contextual sparsity for efficient llms at inference time LLM in a flash Efficient Large Language Model Inference with Limited Memory ReLU Strikes Back Exploiting Activation Sparsity in Large Language Models ReLU2 Wins: Discovering Effi…

量子飞跃:从根本上改变复杂问题的解决方式

内容来源&#xff1a;量子前哨&#xff08;ID&#xff1a;Qforepost&#xff09; 编辑丨王珩 编译/排版丨沛贤 深度好文&#xff1a;1000字丨5分钟阅读 利用多功能量子比特的量子计算机已处于解决复杂优化问题的最前沿&#xff0c;例如旅行商问题&#xff0c;这是一个典型的…

GRU之我见(含案例讲解)

GRU&#xff08;Gated Recurrent Unit&#xff09;是一种常用于处理序列数据的深度学习模型&#xff0c;特别是在自然语言处理&#xff08;NLP&#xff09;和时间序列分析领域。它是一种循环神经网络&#xff08;RNN&#xff09;的变种&#xff0c;旨在解决长期依赖和梯度消失问…

torch.where()中并行方式的实现

torch.where()中一般有三个参数。 第一个参数是一个判断条件。 第二个参数是条件成立时的值。 第三个参数是条件不成立时的值。 for batch in range(2):for i in range(256):for j in range(256):output[batch][i][j] 0 if tensor_count_0[A_arg[batch,i,j]][B_arg[batch,i…

MATLAB利用A星/A*算法求障碍地图两点最短路径

MATLAB利用A星/A*算法求障碍地图两点最短路径 MATLAB利用A星/A*算法求障碍地图两点最短路径

大模型日报2024-04-12

大模型日报 2024-04-12 大模型资讯 Meta即将发布具有“人类水平认知”的AI模型 摘要: Meta公司宣称即将推出具备“人类水平认知”的人工智能模型。这标志着我们可能即将进入一个全新的大型语言模型和聊天机器人领域。Meta的Llama 3和OpenAI的GPT-5将为这一领域带来革命性的进展…

前端-每天一道面试题(1)-HTML常见的布局方式

哈喽&#xff0c;大家好&#xff0c;本来今天要更新项目内容的&#xff0c;但是考虑到由于是全国大学生服务外包大赛组委会的题目&#xff0c;而且比赛目前也正在进行&#xff0c;作品提交尚未截止&#xff0c;为了避免由于试题版权而引发的一系列问题&#xff0c;这个系列目前…

10、【代理模式】通过引入一个代理对象来控制对原始对象的访问的方式。

你好&#xff0c;我是程序员雪球。 今天我们了解代理模式的原理、静态代理和动态代理的区别、Spring AOP 和动态代理的关系、代理模式的使用场景&#xff0c;以及用 Java 实现一个动态代理示例 一、代理模式的原理 代理模式是一种设计模式&#xff0c;它提供了一种通过引入一个…

概念:CPU、内存、磁盘、Android内存分配

cpu CPU的全称是Central Processing Unit&#xff0c;中文名称为中央处理单元。它是计算机硬件的核心部件&#xff0c;负责解释计算机程序指令并处理计算机软件中的数据。简言之&#xff0c;CPU执行计算机程序中的操作指令&#xff0c;包括基本算术、逻辑、控制和输入/输出&am…