Problem Description
平面上有n条直线,且无三线共点,问这些直线能有多少种不同交点数。
比如,如果n=2,则可能的交点数量为0(平行)或者1(不平行)。
Input
输入数据包含多个测试实例,每个测试实例占一行,每行包含一个正整数n(n<=20),n表示直线的数量.
Output
每个测试实例对应一行输出,从小到大列出所有相交方案,其中每个数为可能的交点数,每行的整数之间用一个空格隔开。
Sample Input
2 3
Sample Output
0 1 0 2 3

题目看起来很水,思路其实很简单!不过也需要非常严谨的思路才能想对。。。。

首先n条线段,全部平行,0;

n-1条线段平行,n-1;

n-2条线段平行,2*(n-2)+2条线段的交点数;

n-3条线段平行,3*(n-3)+3条线段的交点数;

n-4条线段平行,4*(n-4)+4条线段的交点数;

………………………………

以此类推!

上面我写的     “+2条线段的交点数;”      这个部分需要注意!恰好是我们可以记录下来的前面的数据,所以我们得先打个表!打表记录每一种情况,然后后面再来用到前面的数据,所以!采取dp[i][j]的方式来记录,注意dp[i][j]只是状态表示,表示n为i的时候j如果是可能的交点数则dp[i][j]=1,否则dp[i][j]=0;这个题自己思考一下很容易的。

最后注意格式,pe了两次,,,唉,输出方法问题啊!

#include<iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
bool dp[21][200]={{0}};
int main()
{for(int i=1;i<21;i++)dp[i][0]=1;int k;for(int i=2;i<21;i++){for(k=1;k<i;k++){for(int j=0;j<200;j++){if(dp[k][j]==1)dp[i][k*(i-k)+j]=1;}}}
/*for(int i=1;i<21;i++){for(int j=0;j<50;j++)
{if(dp[i][j]==1)cout<<j<<' ';// else cout<<' '<<' ';
}cout<<endl;}*/int n;int s[200];while(cin>>n){int m=0;for(int i=0;i<200;i++)if(dp[n][i])s[m++]=i;cout<<s[0];for(int i=1;i<m;i++)cout<<' '<<s[i];cout<<endl;}return 0;
}

转载于:https://www.cnblogs.com/martinue/p/5490516.html

hdu1466(dp)相关推荐

  1. dp,sp,px相互转化

    方法一: public int sp2px(float sp) {return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, ...

  2. [JS][dp]题解 | #打家劫舍(一)#

    题解 | #打家劫舍(一)# 题目链接 打家劫舍(一) 题目描述 描述 你是一个经验丰富的小偷,准备偷沿街的一排房间,每个房间都存有一定的现金,为了防止被发现,你不能偷相邻的两家,即,如果偷了第一家, ...

  3. HDU 2084 数塔(DP)(JAVA版)

    数塔 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...

  4. dp cf 20190615

    A. Timofey and a tree 这个不算是dp,就是一个思维题,好难想的思维题,看了题解才写出来的, 把点和边分开,如果一条边的两个点颜色不同就是特殊边,特殊边两边连的点就叫特殊点, 如果 ...

  5. BZOJ 1003[ZJOI2006]物流运输(SPFA+DP)

    Problem 1003. -- [ZJOI2006]物流运输 1003: [ZJOI2006]物流运输 Time Limit: 10 Sec  Memory Limit: 162 MB Submit ...

  6. [NOI2005]聪聪与可可(期望dp)

    题意:给一张无向图,有一只猫和一只老鼠,猫每秒会向老鼠的方向移动两个单位,若它们的距离为一,那么只会移动一个单位,老鼠会等概率向周围移动一步或不动,求猫抓到老鼠的期望时间. Solution luog ...

  7. Codeforces 903F Clear The Matrix(状态压缩DP)

    题目链接 Clear The Matrix 题意 给定一个$4 * n$的矩形,里面的元素为$'.'$或$'*'$.现在有$4$种正方形可以覆盖掉$'*'$,正方形的边长分别为$1,2,3,4$. 求 ...

  8. 喵哈哈村的魔法考试 Round #1 (Div.2) 题解源码(A.水+暴力,B.dp+栈)

    A.喵哈哈村的魔法石 发布时间: 2017年2月21日 20:05   最后更新: 2017年2月21日 20:06   时间限制: 1000ms   内存限制: 128M 描述 传说喵哈哈村有三种神 ...

  9. 尼克的任务 dp 洛谷1280

    蒟蒻表示老久没看过dp题目了,,挺水的一道dp题目都没想出来,,, 首先设dp[i]表示从开始到i时间的最大空闲时间,用vector to[x] 表示从x点开始的任务结束时间,cnt[x]表示从x开始 ...

最新文章

  1. 二维物体形状识别方法比较
  2. Mysql分析性能(存储过程)
  3. wxWidgets:TextFrame 类的完整实现
  4. 学习响应式BootStrap来写融职教育网站,Bootsrtap第十天你的收获
  5. Java开发必须掌握的8种网站攻防技术
  6. 自己寫的 Loading JS插件
  7. [delphi]修改indy源码后重新编译
  8. codeforces 628D. Magic Numbers 数位dp
  9. 怎么捡自己空投_“吃鸡”里信号枪子弹可以复制?玩家发现神秘技巧,空投捡到手软...
  10. 逆向project实战--Afkayas.1
  11. 2021年甘肃省中职生高考成绩查询,甘肃2021年中专生怎么参加普通高考
  12. android客户端服务器传输,【图片】【转】通过Android 客户端上传数据到服务器【aide吧】_百度贴吧...
  13. Telink 825x 蓝牙开发笔记2
  14. 大数据分析应用的机遇与挑战
  15. 解读后天性学者症候群:怎么一闷棍砸出个天才?
  16. VTK:图形基本操作进阶——连通区域分析
  17. Android拓展系列(5)--CyanogenMod源码下载和编译(Android ROM定制基础篇)
  18. 【C++】完成一个消消乐
  19. 【Redis】五种存储类型及其底层数据结构
  20. 有限群元素的阶必然存在

热门文章

  1. 特殊类型窗体制作: 用C#实现启动欢迎界面
  2. 团队开发框架(Developement Structure for Team),内容列表及整理计划
  3. docker中启动关闭删除所有的容器命令
  4. 3dmax导出到unity3d下分割动画
  5. BP神经网络python简单实现
  6. 一台机器同时运行两个Tomcat
  7. softmax函数与交叉熵损失函数
  8. 谢烟客---------Linux之DNS服务系统的基础知识
  9. MySQL 索引优化全攻略
  10. event对象获取方法