Moon Game FZU - 2148(计算几何)

本文介绍了一种算法,用于计算平面上给定点集能够形成的不重复凸四边形的数量。通过判断四点是否能构成凸四边形来实现,重点在于理解凸四边形的性质及其对角线特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

I - Moon Game

题目链接:FZU - 2148

题意:n个点, 问各一个成几个不重复的凸四边形;

思路:凸四边形对角线一定相交;

#include <stdio.h>
#include <algorithm>
#include <iostream>
#include <string.h>
#include <math.h>
#include <queue>
using namespace std;
struct node{
	double x, y;
}point[105];
double cross(node a, node b, node c){
	return (b.x-a.x)*(c.y-b.y)-(b.y-a.y)*(c.x-b.x);
}
bool judge(int i, int j, int k, int l){
	if(cross(point[i], point[j], point[k])*cross(point[i], point[j], point[l])<0&&cross(point[k], point[l], point[i])*cross(point[k], point[l], point[j])<0) return true;
	else return false;
}
int main(){
	int T;
	cin >>T;
	int ca=0;
	while(T--){
		ca++;
		int n;
		cin >> n;
		int cnt=0;
		for(int i=0; i<n; i++){
			cin >> point[i].x >> point[i].y;
		}
		for(int i=0; i<n; i++){
			for(int j=i+1; j<n; j++){
				for(int k=j+1; k<n; k++){
					for(int l=k+1; l<n; l++){
						if(judge(i, j, k, l)||judge(i, k, j, l)||judge(i, l, j, k)) cnt++;
					}
				}
			}
		}
		cout <<"Case " <<ca << ": " <<cnt <<endl;
	
	}
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值