大数据网站怎么做的/公众号如何推广
主要实现思路
- 整体流程思路:
- 程序旨在解决给定平面上不同数量的直线(无三线共点),求出每种直线数量下所有可能的交点数量,并按要求格式输出的问题。整体通过初始化一个二维数组来存储不同直线数量与交点数量对应的存在状态,先基于简单情况(全平行时交点数为 0)进行初始化,然后利用双重嵌套循环逐步推导更多直线数量下的交点情况,最后通过循环读取输入的直线数量,查找并输出对应直线数量下所有可能的交点数量,以此来处理多组测试数据,直到文件末尾结束运行。
- 具体步骤思路:
- 数组初始化阶段:
- 首先定义了一个二维数组
a[21][191]
,根据n
条直线最多可有(n - 1) * n / 2
个交点(这里考虑n <= 20
的上限,所以第二维大小设为 191 能涵盖所有可能交点数情况),用于存储不同直线总数(行索引表示)与交点数量(列索引表示)之间的某种状态关系,初始将数组所有元素设为 0,表示初始时都不确定是否存在相应的直线与交点数量组合情况。 - 接着通过
for (int i = 0; i < 21; i++) { a[i][0] = 1; }
循环将每一行(对应不同直线总数情况)中列坐标为 0 的元素值都设为 1,这是因为所有直线都平行时交点数必然为 0,先把这种基础的、确定的情况在数组中标记好,方便后续基于此推导其他情况。
- 首先定义了一个二维数组
- 交点情况推导阶段(动态规划思想体现):
- 外层
for (int x = 2; x <= 20; x++)
循环从 2 条直线开始,到 20 条直线为止,遍历不同的总直线数x
,目的是逐步计算每种直线总数下的交点情况。对于每个x
值:- 中层
for (int n = 0; n <= x; n++)
循环遍历不平行部分的直线数量n
(范围从 0 到当前总直线数x
),这里n
代表在x
条直线里不平行的那些直线数量,通过改变n
的值可以考虑各种不同的直线平行、相交组合方式,来推导对于总直线数x
的交点情况。 - 内层
for (int j = 0; j <= (n - 1) * n / 2; j++)
循环针对当前不平行直线数量n
所能产生的交点数量范围(从 0 到n
条直线最多能产生的交点数(n - 1) * n / 2
)进行遍历,用于检查在这种特定的n
条不平行直线及其交点数j
的组合下,能否推导出对于总直线数为x
的交点情况。 - 在这个三重循环内部,当发现对于
n
条直线存在j
个交点(即a[n][j] == 1
)这种已知的有效交点情况组合时,就通过计算(x - n) * n + j
来得到在x
条直线中,若有n
条直线按已有的j
个交点情况排列,其余(x - n)
条直线与这n
条直线相交所能产生的交点数量,然后将数组a[x][(x - n) * n + j]
的位置标记为 1,表示存在x
条直线有这么多个交点的情况,通过这样不断利用已知的交点情况去推导更多直线数量下的交点情况,逐步填充数组a
,记录下各种可能的直线与交点数量的存在关系。
- 中层
- 外层
- 结果输出阶段:
- 定义变量
n
用于接收输入的直线数量,通过while (scanf("%d", &n)!= EOF)
循环读取多组测试数据,只要没读到文件末尾就持续处理新输入的直线数量情况。 - 对于每次输入的直线数量
n
,通过for (int i = 0; i <= (n - 1) * n / 2; i++)
循环遍历n
条直线所能产生的所有可能交点数量范围,检查数组a[n][i]
的值,如果a[n][i] == 1
,说明对于n
条直线存在i
个交点这种情况是存在的,就输出这个交点数量i
,并且每个交点数量之间用一个空格隔开。 - 当输出完一组直线数量
n
对应的所有交点数量后,通过putchar('\n');
输出一个换行符,使每组测试实例的输出结果都换行显示,符合题目要求的输出格式,接着继续循环读取下一组输入的直线数量进行处理,直到文件末尾结束整个程序的运行。
- 定义变量
- 数组初始化阶段:
#include <stdio.h>int main()
{// n条直线最多可有(n - 1) * n / 2个交点,例如20条直线最多有190个交点,这里根据题目中直线数量上限(n <= 20)确定二维数组第二维的大小为191,以涵盖所有可能的交点数量情况int a[21][191] = { 0 };// 初始化二维数组a的所有元素为0,这个数组用于存储不同直线数量下对应不同交点数量是否存在的状态,后续通过计算来更新这些状态值// 例如a[i][j]中,i表示直线的总数,j表示交点的数量,a[i][j] = 1表示存在i条直线有j个交点这种情况,初始都设为0表示都还未确定是否存在相应情况// 外层循环初始化每一行(对应不同直线总数情况)中列坐标为0的元素值都为1,也就是表示所有直线都平行时(交点数为0)的情况,先将这种基础情况标记好for (int i = 0; i < 21; i++){a[i][0] = 1;}// 外层循环开始遍历不同的总直线数x,从2条直线开始(因为1条直线不存在交点情况已经在初始化时涵盖了平行无交点即a[1][0] = 1的情况),到20条直线为止,这个循环用于逐步推导更多直线数量下的交点情况for (int x = 2; x <= 20; x++){// 中层循环遍历不平行部分的直线数量n,范围是从0到当前总直线数x,这里n表示在x条直线中不平行的那些直线数量,通过改变n的值来考虑不同的直线平行、相交组合情况for (int n = 0; n <= x; n++){// 内层循环遍历当前不平行直线数量n所能产生的交点数量范围,也就是从0到n条直线最多能产生的交点数(n - 1) * n / 2,用于检查在这种特定的不平行直线数量及其交点数组合下,能否推导出对于更多直线(总直线数为x)的交点情况for (int j = 0; j <= (n - 1) * n / 2; j++){// 如果发现对于n条直线存在j个交点这种情况(即数组中对应位置的值为1),说明找到了一种已知的有效交点情况组合if (a[n][j] == 1){// 基于这种已知情况,去更新对于总直线数为x时的交点情况。计算(x - n) * n + j得到在x条直线中,当有n条直线按已有的j个交点情况排列,其余(x - n)条直线与这n条直线相交所能产生的交点数量,将对应的数组位置标记为1,表示存在x条直线有这么多个交点的情况a[x][(x - n) * n + j] = 1;}}}}// 定义变量n,用于接收输入的直线数量,通过循环读取多组测试数据,只要没读到文件末尾(EOF)就持续处理输入的直线数量情况int n;while (scanf("%d", &n) != EOF){// 循环遍历当前输入的直线数量n所能产生的所有可能交点数量范围,也就是从0到(n - 1) * n / 2,去检查哪些交点数量情况是存在的(对应数组位置值为1)for (int i = 0; i <= (n - 1) * n / 2; i++){// 如果发现对于n条直线存在i个交点这种情况(即a[n][i] == 1),就输出这个交点数量if (a[n][i] == 1){printf("%d ", i);}}// 每组输出结束后,输出一个换行符,使每组测试实例的输出结果换行显示,更符合输出格式要求putchar('\n');}return 0;
}
相关文章:

计算直线的交点数
主要实现思路 整体流程思路: 程序旨在解决给定平面上不同数量的直线(无三线共点),求出每种直线数量下所有可能的交点数量,并按要求格式输出的问题。整体通过初始化一个二维数组来存储不同直线数量与交点数量对应的存在…...

STM32基于HAL库的串口接收中断触发机制和适用场景
1. HAL_UART_Receive_DMA函数 基本功能 作用:启动一个固定长度的 DMA 数据接收。特点: 需要预先指定接收数据的长度(Size 参数)。DMA 会一直工作直到接收到指定数量的数据,接收完成后触发 HAL_UART_RxCpltCallback 回…...

java面试宝典
本文只摘抄部分宝典内容,完整宝典可以在打开下方链接,在网盘获取 ^ _ ^ 链接:java面试宝典 提取码: wxy1 复制这段内容后打开百度网盘手机App,操作更方便哦 链接: java前端面试宝典 提取码: wxy1 复制这段内容后打开百度网盘手机Appÿ…...

Scala—Slice(提取子序列)方法详解
Scala—Slice(提取子序列)方法详解 在 Scala 中,slice 方法用于从集合中提取一个连续的子序列(切片)。可以应用于多种集合类型,如 List、Array、Seq 等。 一、slice 方法的定义 slice 根据提供的起始索引…...

【电子通识】案例:USB Type-C USB 3.0线缆做直通连接器TX/RX反向
【电子通识】案例:连接器接线顺序评估为什么新人总是评估不到位?-CSDN博客这个文章的后续。最近在做一个工装项目,需要用到USB Type-C线缆做连接。 此前已经做好了线序规划,结果新人做成实物后发现有的USB Type-C线缆可用,有的不行。其中发现USB3.0的TX-RX信号与自己的板卡…...

【SKFramework框架核心模块】3-5、函数扩展模块
推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享QQ群:398291828小红书小破站 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 一、前言 【Unity3D框架】SKFramework框架完全教程《全…...

使用 EasyExcel 提升 Excel 处理效率
目录 前言1. EasyExcel 的优点2. EasyExcel 的功能3. 在项目中使用 EasyExcel3.1 引入依赖3.2 实体类的定义与注解3.3 工具类方法的实现3.4 在 Controller 中使用 4. 总结5. 参考地址 前言 在日常开发中,Excel 文件的处理是不可避免的一项任务,特别是在…...

【提高篇】3.7 GPIO(七,GPIO开发模型 一)
目录 一,开发模型 二,初始化函数 2.1 时钟使能 一,开发模型 通常我们在进行GPIO相关外设的开发时,往往遵循下面4个步骤,如下: 初始化函数 用于进行时钟设置、参数设置、IO设置、中断设置等。读处理函数 用于从外设读取数据。写处理函数 用于从向外设写数据。中断处理…...

Webpack Tree Shaking 技术原理及应用实战,优化代码,精简产物
前言 在前端开发中,优化代码体积和提升应用性能是至关重要的课题。Webpack 提供了多种优化手段来帮助开发者实现这一目标,Tree Shaking 就是其中一种非常重要的优化技术,它通过在编译阶段移除未被使用的代码模块,从而显著减小最终…...

angular19-官方教程学习
周日了解到angular已经更新到19了,想按官方教程学习一遍,工欲善其事必先利其器,先更新工具: 安装新版版本 卸载老的nodejs 20.10.0,安装最新的LTS版本 https://nodejs.org 最新LTS版本已经是22.12.0 C:\Program File…...

RocketMQ集群部署完整指南
前言 本文将详细介绍RocketMQ集群的部署流程,包括环境准备、安装配置、启动运维等各个方面。 一、环境准备 1.1 系统要求 64位操作系统,建议LinuxJDK 1.8及以上版本源码安装需要Maven 3.2.x1.2 下载RocketMQ 可从以下地址获取RocketMQ安装包: Apache官方开源地址: http://r…...

解决mysql 内存持续上涨问题
问题背景: 业务量不大,Mysql 内存持续上涨,虽然不是很明显,但随着时间慢慢增长,1~2个月左右内存达到80%一旦有一些执行缓慢的sql 内存会快速上去增加/修改大表的字段内存会快速上去 常规操作: Mysql 设置…...

Qt 小项目 学生管理信息系统
主要是对数据库的增删查改的操作 登录/注册界面: 主页面: 添加信息: 删除信息: 删除第一行(支持多行删除) 需求分析: 用QT实现一个学生管理信息系统,数据库为MySQL 要求…...

16-01、JVM系列之:内存与垃圾回收篇(一)
JVM系列之:内存与垃圾回收篇(一) ##本篇内容概述: 1、JVM结构 2、类加载子系统 3、运行时数据区之:PC寄存器、Java栈、本地方法栈一、JVM与JAVA体系结构 JAVA虚拟机与JAVA语言并没有必然的联系,它只是与特…...

聊聊系统的弹力设计-服务器性能指标篇(一)
一、什么是弹性机制 弹性,大家可以轻易的联想到橡胶,可伸缩性是弹性机制的一个很重要的特点,但是实际上弹性不等同于可伸缩性 弹性(Elasticity) 通常指的是系统能够自动适应负载的变化,即自动扩展和收缩资…...

MQ:kafka-消费者的三种语义
文章目录 前言(一) 创建topic(二) 生产者(三)消费者1. At-most-once Kafka Consumer2. At-least-once kafka consumer3. 使用subscribe实现Exactly-once4. 使用assign实现Exactly-once 前言 本文主要是以kafka 09的client为例子,详解kafka c…...

中国1km分辨率SSP119情景(SSP119、SSP245 SSP585),模式逐月降水量数据集(2021-2100)
目录 简介 摘要 代码 引用 网址推荐 知识星球 机器学习 干旱监测平台 中国1km分辨率SSP119情景EC-Earth3模式逐月降水量数据集(2021-2100) 简介 该数据集为中国多情景多模式逐月降水量数据,空间分辨率为0.0083333(约1km),时间为2021年1月-2100年…...

21天掌握javaweb-->第8天:前后端分离架构与Axios请求
前后端分离架构概念 前后端分离架构是一种现代Web应用开发模式,其中前端和后端分别独立开发和部署,通过API进行数据交互。这种架构使得前端专注于用户界面和用户体验,而后端则专注于业务逻辑和数据处理。 优势 开发效率高:前后端可以并行开发,减少了开发时间。技术栈灵活…...

基于阻塞队列的生产者消费者模型动画演示
一个基于阻塞队列的生产者消费者模型的动画演示: 这是打包好的程序。程序是用 QT 写的。 通过网盘分享的文件:CP模型.7z 链接: https://pan.baidu.com/s/1YjC7YiSqHGqdr6bbffaDWg?pwde6g5 提取码: e6g5 CP模型...

DHCP和BOOTP选项及DHCP协议操作详解
DHCP和BOOTP选项及DHCP协议操作详解 DHCP与BOOTP简介 1. BOOTP(Bootstrap Protocol) 功能:提供静态配置的IP分配。用途:在早期用于无盘工作站启动时获取IP地址和基本配置。缺点:只能提供静态IP配置,无法动…...

数据结构--链表和单链表详解及实现
一.前言 数据结构思维导图如下,灰色标记的是之前讲过的,本文将带你走近单链表(红色标记部分),希望大家有所收获🌹🌹 二.链表的定义和概念 在讲单链表之前,我们先学习一下链表 2.1 链表的定义 链表是一种…...

vue3基础知识
书接上文,这篇继续来学习vue3的核心语法,可以先看上一篇再来看这篇效果更好。 1. computed computed 用于创建 计算属性,即基于其他响应式数据的值动态计算并缓存的属性。它的主要作用是优化性能和提高代码的可维护性,避免不必要…...

【Linux系统】Ubuntu 缓冲区机制
在Ubuntu中,和其他操作系统有个不一样的机制:缓冲区。这篇文章是对与缓冲区的详细介绍。 在 Ubuntu 中(以及其他基于 Linux 的操作系统),缓冲区(Buffer)是内核用于优化 I/O 操作的重要机制。它…...

ChatGPT 最新推出的 Pro 订阅计划,具备哪些能力 ?
OpenAI 最近推出了 ChatGPT Pro,这是一个每月收费 200 美元的高级订阅计划,旨在为用户提供对 OpenAI 最先进模型和功能的高级访问。 以下是 ChatGPT Pro 的主要功能和能力: 高级模型访问: o1 模型:包括 o1 和 o1 Pro…...

数据结构理论
内容来源青岛大学数据结构与算法课程,链接:数据结构与算法基础(青岛大学-王卓)_哔哩哔哩_bilibili 绪论 数据结构概述 数据结构和算法的定义:我们如何把现实中大量而复杂的问题以特定的数据类型和特定的存储结构保存…...

es 3期 第14节-全文文本分词查询
#### 1.Elasticsearch是数据库,不是普通的Java应用程序,传统数据库需要的硬件资源同样需要,提升性能最有效的就是升级硬件。 #### 2.Elasticsearch是文档型数据库,不是关系型数据库,不具备严格的ACID事务特性ÿ…...

六安市第二届网络安全大赛复现
misc 听说你也喜欢俄罗斯方块? ppt拼接之后 缺三个角补上 flag{qfnh_wergh_wqef} 流量分析 流量包分离出来一个压缩包 出来一张图片 黑色代表0白色代表1 101010 1000 rab 反的压缩包 转一下 密码:拾叁拾陆叁拾贰陆拾肆 密文:4p4n5758…...

Sarcomere仿人灵巧手ARTUS,20个自由度拓宽机器人作业边界
Sarcomere Dynamics 是一家深度技术先驱,通过开发和商业化仿人机械来改变机器人行业。专注于为科研人员,系统集成商和制造商提供更实惠、更轻便且更灵活的末端执行器替代品。凭借创新的致动器技术,创造了一款紧凑、轻便且非常坚固的机械手Art…...

Django drf 基于serializers 快速使用
1. 安装: pip install djangorestframework 2. 添加rest_framework到您的INSTALLED_APPS设置。 settings.pyINSTALLED_APPS [...rest_framework, ] 3. 定义模型 models.pyfrom django.db import modelsclass BookModel(models.Model):name models.CharField(max_length64)…...

pycharm集成环境中关于安装sklearn库报错问题分析及解决
在输入pip install sklearn后,出现如下提示: pip install sklearn Collecting sklearn Using cached sklearn-0.0.post12.tar.gz (2.6 kB) Installing build dependencies ... done Getting requirements to build wheel ... error error: subprocess-…...