hdoj_1466 직선 의 교점 수 를 계산 하 다
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 6625 Accepted Submission(s): 2921
Problem Description
평면 에 n 개의 직선 이 있 고 3 선의 공통점 이 없 으 며 이 직선 들 이 몇 가지 서로 다른 교점 이 있 는 지 물 어보 세 요.
예 를 들 어 n = 2 이면 가능 한 교점 수량 은 0 (평행) 또는 1 (평행 하지 않 음) 이다.
Input
입력 데 이 터 는 여러 개의 테스트 인 스 턴 스 를 포함 하고 모든 테스트 인 스 턴 스 는 한 줄 을 차지 하 며 각 줄 은 하나의 정수 n (n < 20) 을 포함 하고 n 은 직선 수량 을 표시 합 니 다.
Output
모든 테스트 인 스 턴 스 는 한 줄 의 출력 에 대응 하고 작은 것 부터 큰 것 까지 모든 교차 방안 을 보 여 줍 니 다. 그 중에서 모든 수 는 가능 한 교차 포인트 이 고 모든 줄 의 정수 사 이 를 빈 칸 으로 구분 합 니 다.
Sample Input
2
3
Sample Output
0 1
0 2 3
1. 제4 조 와 나머지 직선 은 모두 평행 = > 0 + 4 * 0 + 0 = 0;2. 제4 조 는 그 중의 두 개 와 평행 하고 교점 수 는 0 + (n - 1) * 1 + 0 = 3 이다.
3. 네 번 째 조 는 그 중의 한 줄 과 평행 이다. 이 두 줄 의 평행 직선 과 다른 두 줄 의 교점 수 는 (n - 2) * 2 = 4 이 고 다른 두 줄 의 직선 은 평행 일 수도 있 고 교차 할 수도 있 기 때문에 교점 수 는 다음 과 같다.
0+(n-2)*2+0=4 혹은 0+(n-2)*2+1=5
4. 네 번 째 직선 은 그 어떠한 직선 과 평행 하지 않 고 교점 수 는 다음 과 같다.
0+(n-3)*3+0=3 또는 0 + (n - 3) * 3 + 2 = 5 또는 0 + (n - 3) * 3 + 3 = 6
즉 n = 4 시 에는 0 개, 3 개, 4 개, 5 개, 6 개의 서로 다른 교점 이 있다.
상기 n = 4 의 분석 과정 에서 우 리 는 m 개의 직선 교점 방안 수 = (m - r) 개의 평행선 과 r 개의 직선 이 교차 하 는 교점 수 를 발견 했다. + r 조 직선 자체 의 교점 방안 = (m - r) * r + r 조 간 자체 의 교점 방안 수 (0 < = r < m)
#include <iostream>
#include <cstring>
#include <vector>
#include <algorithm>
using namespace std;
#define MAX 21
int main()
{
freopen("in.txt", "r", stdin);
int n, i, j, k, x;
vector<int>array[MAX];
array[1].push_back(0);
array[2].push_back(0);
array[2].push_back(1);
for(i = 3; i < MAX; i++) // i
{
for(j = 0; j < i; j++)
{
if(j == 0)
{
array[i].push_back(0);
}
else
{
for(k = 0; k < array[j].size(); k++)
{
array[i].push_back((i - j) * j + array[j][k]);
}
}
}
sort(array[i].begin(), array[i].end());
}
while(cin >> n)
{
x = array[n][0];
cout << x << " ";
for(i = 1; i < array[n].size() - 1; i++)
{
if(x != array[n][i])
cout << array[n][i] << " ";
x = array[n][i];
}
if(x != array[n][array[n].size() - 1])
cout << array[n][i] << endl;
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.