蓝桥杯练习系统(算法训练)ALGO-953 混合积

资源限制

内存限制:256.0MB C/C++时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s

问题描述

众所周知,人人都在学习线性代数,既然都学过,那么解决本题应该很方便。

宇宙大战中,qdc在其中建立了许多空间站,这些空间站散落在三维空间中,并且由于宇宙之大,空间站完全可以抽象为一个质点。为了达到毁灭性攻击,qdc可以选择其中4个空间站,然后炸毁其形成的平行六面体空间(如图)。既然是毁灭性的打击,六面体自然要有大的体积,即使他会炸毁自己的空间站。胜利掌握在你的手中,你来编写一个程序输出这个最大的体积。

输入格式

第一行输入一个数,表示空间站数目。

接下来每行三个数,表示这些空间站的三维坐标。

输出格式

一个数字如题所述。

样例输入

4

0 0 0

0 0 1

0 1 0

2 0 0

样例输出

2

数据规模和约定

对于30%的数据n<=5

对于100%的数据4<=n<=10

|xi|,|yi|,|zi|<=512

cpp 复制代码
#include<iostream>
#include<math.h>
using namespace std;
typedef struct Point{
	int x;
	int y;
	int z;
}Point;
Point point[11];
int ans=0;
int main(){
	int n;
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>point[i].x>>point[i].y>>point[i].z;
	} 
	for(int i=1;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++){
					//求出向量a,b,c,利用混合积:a叉乘b点乘c 
					int ax=point[j].x-point[i].x;
					int ay=point[j].y-point[i].y;
					int az=point[j].z-point[i].z;
					
					int bx=point[k].x-point[i].x;
					int by=point[k].y-point[i].y;
					int bz=point[k].z-point[i].z;
					
					int cx=point[l].x-point[i].x;
					int cy=point[l].y-point[i].y;
					int cz=point[l].z-point[i].z;
					
					int res=abs(ax*by*cz+ay*bz*cx+az*bx*cy-az*by*cx-bz*cy*ax-cz*ay*bx);
					ans=max(res,ans);
					
				}
			}
		}
	}
	cout<<ans<<endl;
	return 0;
} 

思路:四个点可以确定一个六面体的体积,因此在n个点中挑4个点即可,和顺序无关。利用4层for循环来选择4个点,使用混合积求体积。

相关推荐
追求源于热爱!20 分钟前
记4(可训练对象+自动求导机制+波士顿房价回归预测
图像处理·人工智能·算法·机器学习·回归
比特在路上23 分钟前
蓝桥杯之c++入门(四)【循环】
c++·职场和发展·蓝桥杯
qq_433618441 小时前
哈夫曼树
数据结构·算法
余辉zmh1 小时前
【贪心算法篇】:“贪心”之旅--算法练习题中的智慧与策略(二)
c++·算法·leetcode·贪心算法
余辉zmh1 小时前
【贪心算法篇】:“贪心”之旅--算法练习题中的智慧与策略(一)
c++·算法·leetcode·贪心算法
taoyong0011 小时前
代码随想录算法训练营第三十七天-动态规划-完全背包-377. 组合总和 Ⅳ
c++·算法·leetcode·动态规划
励志成为美貌才华为一体的女子2 小时前
python算法和数据结构刷题[4]:查找算法和排序算法
数据结构·算法·排序算法
tt5555555555552 小时前
每日一题-判断是不是完全二叉树
数据结构·算法
君义_noip3 小时前
信息学奥赛一本通 1607:【 例 2】任务安排 2 | 洛谷 P10979 任务安排 2
算法·动态规划·信息学奥赛·斜率优化
因兹菜4 小时前
[LeetCode]day4 977.有序数组的平方
数据结构·算法·leetcode