hdu 1466 计算直线的交点数 递推

以前做这道题目的时候,花了好长时间找规律,感觉十分高大上,今天回顾这个题目的时候,突然有了顿悟,

  有了递推的思想就容易解决了。

题意:给你n条直线,问:输出这些直线所有相交情况下的交点个数(升序输出)

解题思路:我们可以从n-1条直线相交的情况推导出n条直线的相交情况,考虑到直线的关系不是相交就是平行,我们可以推倒一下n=4的情况:

  已知n=3时有0,2,3;

  (1):第四条直线与前三条平行,则有0;

  (2):第四条直线与其中两条平行,则有3;

  (3):第四条直线与其中一条平行,则有4,5;

  (4):第四条直线不与任何直线平行,则有3,5,6;

  大致可以知道当有j条边与第n条直线不平行是时候有(n-j)*j加上j条直线的交点,

  得出状态dp[j][j条边的交点]存在,得出状态dp[n][(n-j)*j+j条直线的交点]存在,

 1 #include <stdio.h>
 2 #include <string.h>
 3 #define N 200//当n=20的时候交点数目最多为n*(n-1)/2 < 200
 4 
 5 int dp[21][N];//dp[直线的总数][交点的个数] = 状态(本状态存在为1,否则为0)
 6 int main ()
 7 {
 8     int i, n, j, k;
 9     for (i=0; i<21; i++)
10         dp[i][0] = 1;//所有的直线都平行
11     for (i=2; i<21; i++)//枚举n的值,并且打标
12         for (j=1; j<i; j++)//枚举与i相交的边的数目
13             for (k=0; k<N; k++)//枚举j条边的交点情况
14                 if (dp[j][k])//如果存在则推论成功
15                     dp[i][(i-j)*j+k] = 1;
16     while (scanf ("%d", &n) != EOF)
17     {
18         for (i=0; i<N; i++)
19         {
20             if (dp[n][i])
21             {
22                 if (i)
23                     printf (" ");
24                 printf ("%d", i);
25             }
26         }
27         printf ("\n");
28     }
29 }

 

转载于:https://www.cnblogs.com/alihenaixiao/p/4107907.html

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

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

相关文章

Android插件化开发基础之App如何动态加载类

在 Java 里面&#xff0c;我们可以把一些类放到 .jar 文件里面&#xff0c;然后用 ClassLoader 动态加载。例如&#xff1a; URLClassLoader ucl URLClassLoader.newInstance(new URL[] {new URL("file:/sdcard/files/test.jar")}); Class clazz ucl.loadClass…

Windows 10 2022 年更新来了!

面向 Release Preview 频道的 Windows 10 预览体验成员&#xff0c;微软现已发布 Windows 10 Build 19044.1499。主要修复1.微软修复了阻止某些环绕声音频在 Microsoft Edge 中播放的问题。2.微软修复了使用中文输入法时&#xff0c;一些应用停止工作的意外错误。3.微软修复了在…

python小工具小发明_【kimol君的无聊小发明】—用python写截屏小工具

前言今天我看了一下自己的文件夹&#xff0c;发现了自己写了许多似乎很无聊的代码。于是乎&#xff0c;一个想法油然而生&#xff1a;“生活已经很无聊了&#xff0c;不如再无聊一点叭”。说干就干&#xff0c;那就开一个专题&#xff0c;我们称之为kimol君的无聊小发明。妙…啊…

npm执行命令后无任何响应(windows下)

曾经执行过npm config set prefix 命令&#xff0c; 导致npm的config乱掉了&#xff0c; 找到这个文件.npmrc&#xff0c; 然后删掉就可以了 。 我的.npmrc位置在C:\Users\Administrator下。转载于:https://www.cnblogs.com/josjo/p/6099631.html

职业技能培训

实战技能 精通web容器 Apache、Nginx 精通Redis、Mongodb、Memcache、Hadoop 精通CGI/FastCGI PHP扩展 精通Qt和Webkt 应用技能 gccgdbmakeautoconfSourceInsightvim理论素养 数据库数据结构操作系统算法WEB转载于:https://www.cnblogs.com/heidsoft/p/3418660.html

当代成年人的生活状态......

1 小喵咪举起了它的狙击枪▼2 简直有毒...▼3 哈哈哈哈哈▼4 电焊既视感▼5 请问需要小猫咪吗&#xff1f;▼6 哈哈哈哈哈▼7 一物降一物▼7 数学能有多好玩&#xff1f;▼你点的每个赞&#xff0c;我都认真当成了喜欢

c++ why can't class template hide its implementation in cpp file?

类似的问题还有&#xff1a; why cant class template use Handle Class Pattern to hide its implementation? || why there are linker problems (undefined reference) to my class template? 我出现问题的源码&#xff08;见main.cpp,Stack.h,Stack.cpp&#xff09;&…

Android插件化开发之动态加载技术系列索引

动态加载介绍 在Android开发中采用动态加载技术&#xff0c;可以达到不安装新的APK就升级APP功能的目的&#xff0c;可以用来到达快速发版的目的&#xff0c;也可以用来修复一些紧急BUG。 现在使用得比较广泛的动态加载技术的核心一般都是使用 ClassLoader &#xff0c;后者能够…

C# using static 声明

许多实际的扩展可以通过扩展方法来实现&#xff0c;并非所有实际的扩展都有可以扩展的类型。对于某些场景&#xff0c;简单的静态方法比较适合。为了更容易调用这些方法&#xff0c;可以使用 using static 声明除去类名。例如&#xff0c;如果打开了 System.Console using stat…

PHP性能追踪及分析工具xhprof的安装与使用

PHP性能追踪及分析工具xhprof的安装与使用 对于本地开发环境来说&#xff0c;进行性能分析xdebug是够用了&#xff0c;但如果是线上环境的话&#xff0c;xdebug消耗较大&#xff0c;配置也不够灵活&#xff0c;因此线上环境建议使用xhprof进行PHP性能追踪及分析。 我们今天就简…

python后面空格报错_python中空格和table混用报错原因

python是一门严格遵守缩进的语言&#xff0c;缩进的规则代表着程序的层级关系。我们来看一段代码。class MyForm(Form):value1 StringField(value1)value2 StringField(value2)value3 StringField(value3) #这行用的是Tab缩进submit SubmitField(Submit)learn pytho…

C 语言 int 型乘法溢出问题

2019独角兽企业重金招聘Python工程师标准>>> long l; int a, b; l a*b; 因为 a*b 的结果仍然以 int 型保存, 所以即使 l 为long,仍然会有溢出,并且截去了部分数据.出现问题. 转载于:https://my.oschina.net/simon203/blog/175885

Android插件化开发基础之Java类加载器与双亲委派模型

类加载器 Java虚拟机类加载过程是把Class类文件加载到内存&#xff0c;并对Class文件中的数据进行校验、转换解析和初始化&#xff0c;最终形成可以被虚拟机直接使用的java类型的过程。 在加载阶段&#xff0c;java虚拟机需要完成以下3件事&#xff1a; a.通过一个类的全限定名…

将k8s制作成3D射击游戏,好玩到停不下来,附源码

点击上方蓝字 关注【我的小碗汤】大家好&#xff0c;我是小碗汤&#xff0c;今天演示一个项目&#xff0c;利用Unity做场景、用C#做交互逻辑&#xff0c;将k8s制作成一个3D射击游戏。正好最近在学习Unity&#xff0c;所以利用这个项目开始上手挺合适的。源码、可执行文件可以自…

Struts学习笔记_i18n

1. I18N原理 a) ResourceBundle和Locale的概念 b) 资源文件 c) native2ascii //test.javaimport java.util.Locale; import java.util.ResourceBundle;public class Test {public static void main(String[] args) {ResourceBundle res ResourceBu…

map reduce相关程序

Test_1.java /** * Hadoop网络课程模板程序* 编写者&#xff1a;James*/ import java.io.IOException; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date;import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.co…

用仿ActionScript的语法来编写html5——终篇,LegendForHtml5Programming1.0开源库件

一,LegendForHtml5Programming1.0库件是什么?它是一个javascript库&#xff0c;它模仿了ActionScript的语法&#xff0c;用于html5的开发&#xff0c;目前实现的功能相对较少&#xff0c;还不能称之为引擎&#xff0c;希望将来可以作为html5的开源引擎&#xff0c;为html5开发…

JavaJVM之ClassLoader源码分析

层次结构和类图 ClassLoader层次结构&#xff1a;UML类图&#xff1a;sun.misc.Launcher.ExtClassLoader sun.misc.Launcher.AppClassLoader 显式加载类 在代码中显式加载某个类&#xff0c;有三种方法&#xff1a;this.getClass().getClassLoader().loadClass()Class.forName(…

python打包库_Python 打包自己的库到 PYPI (可pip安装)

背景在我们安装 Python 库的时候&#xff0c;通常我们都是pip install xxx真是又酷炫又方便那么&#xff0c;当我们自己写了一些自认为不错的库&#xff0c;想要分享给大家使用(或者是想要装X时)能不能也能做到这样呢&#xff1f;环境需求已经写好能正常使用的库/方法/项目 (可…