本文主要是介绍【OJ】计算直线的交点数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述
平面上有n条直线,且无三线共点,问这些直线能有多少种不同交点数。
比如,如果n=2,则可能的交点数量为0(平行)或者1(不平行)。
输入
输入数据包含多个测试实例,每个测试实例占一行,每行包含一个正整数n(n<=20),n表示直线的数量。
输出
每个测试实例对应一行输出,从小到大列出所有相交方案,其中每个数为可能的交点数,每行的整数之间用一个空格隔开。
样例输入
2
3
样例输出
0 1
0 2 3
解题代码
n条直线的交点个数问题,题目中已经明确了不存在三点合一的情况,需要考虑这n条直线有多少条互相平行这个问题。
#include <iostream>
using namespace std;int main()
{int n;while(cin>>n) {// 统一处理 全部都相互平行 这种情况cout<<"0";// 如果2条直线if(n == 2) {cout<<" 1"<<endl;continue;}// 计算最多交点数int y = (n*n-n)/2;// 输出第二小的交点数 (除了0)if(n>3) {cout<<" "<<n-1;}// 第三小的数目2*n-4for(int i=2*n-4; i<=y; i++) {cout<<" "<<i;}cout<<endl;}return 0;
}
总结
总结经验,坚持训练。
Smileyan
2019年9月16日
这篇关于【OJ】计算直线的交点数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!