黑马程序员技术交流社区

标题: 一个数学问题,用编程怎么解决? [打印本页]

作者: HM张博文    时间: 2013-5-18 20:35
标题: 一个数学问题,用编程怎么解决?
本帖最后由 小悟空 于 2013-5-18 21:13 编辑

两条直线最多可以有1个交点,三条直线最多可以有3个交点,4条直线最多可以有6个交点,问:n条直线最多可以有多少个交点?(n>2,n是整数)
作者: 神之梦    时间: 2013-5-18 20:52
隐约记得高中数学老师说过,怎么用表达式写出全忘了,愧对老师啊
作者: 曾大鹏    时间: 2013-5-18 21:03
平面内有2条直线两两相交最多可以得到1个交点,
平面内有3条直线两两相交最多可以得到1+2=3个交点,,(即第四条直线与前面每条直线都相交)
平面内有4条直线两两相交最多可以得到1+2+3=6个交点,(即第四条直线与前面每条直线都相交)
平面内有5条直线两两相交最多可以得到1+2+3+4=10个交点,,(即第四条直线与前面每条直线都相交)
......
所以平面内有n条直线两两相交最多可以得到1+2+3+...+n-1=(1+n-1)*(n-1)/2=(n*n-n)/2个交点
作者: 飞鸟青崖    时间: 2013-5-18 21:05
推理一下就知道了啊。

捕获.JPG (25.48 KB, 下载次数: 0)

捕获.JPG

作者: 张洪慊    时间: 2013-5-18 21:05
本帖最后由 张洪慊 于 2013-5-18 21:08 编辑

多条直线最多交点即两两相交,这里组合知识
即C(n,2)=n*(n-1) / 2 (C(n,2)从n条直线中任意选两个)
如果程序实现的话: (简单写下)
  1. import java.util.Scanner;
  2. class TestChar{
  3.         public static void main(String[] args){
  4.           Scanner scan=new Scanner(System.in);//用下扫描器
  5.            while(scan.hasNextInt()){//输入非int值循环结束
  6.              int n=scan.nextInt();
  7.                  System.out.println(n*(n-1)/2);
  8.             }
  9.        scan.close();
  10.         }

  11. }
复制代码

作者: 殇_心。    时间: 2013-5-18 21:07
如果问题已解决,请及时修改分类,否则继续提问,谢谢合作!
作者: 我是松鼠    时间: 2013-5-18 22:52
请问怎么修改分类?
作者: HM张博文    时间: 2013-5-19 12:43
我是松鼠 发表于 2013-5-18 22:52
请问怎么修改分类?

在你的发帖里面点“编辑”




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2