蓝桥杯练习系统(算法训练)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个点,使用混合积求体积。

相关推荐
ShallWeL4 分钟前
【机器学习】(20)—— 类别不平衡
人工智能·算法·机器学习
明志数科10 分钟前
具身智能数据标准化:从碎片化接口到统一工作组的技术路径
人工智能·算法·机器学习
旖-旎19 分钟前
LeetCode 494:目标和(动态规划/01背包问题)—— 题解
c++·算法·leetcode·动态规划·01背包
spssau30 分钟前
一文学会结构方程模型:从模型搭建、路径图绘制到不达标调整,实操全流程
人工智能·python·算法
zzz_236843 分钟前
【Java实习面试算法冲刺】总复盘
java·算法·面试
DFT计算杂谈1 小时前
DeepSeek 集群服务器无root本地部署指南
数据库·人工智能·python·opencv·算法
qq_454245031 小时前
GraphFoundation — 通用图基础框架
算法·架构
不一样的故事1262 小时前
军工行业合规与基础认知
数据结构·经验分享·算法
To_OC10 小时前
LC 15 三数之和:双指针不难,难的是把去重做对
javascript·算法·leetcode
renhongxia112 小时前
世界模型,是“空中楼阁”还是AGI的“最后一块拼图”?
运维·服务器·数据库·人工智能·算法·agi