完了,总是忍不住想说一下”四维“
2026-05-16 18:07:30
发布于:四川
这里不做过多介绍,直接引入
三维介绍
其实都知道,三维是有x、y、z三个量,其中肯定有人想着“x,y是二维也就是平面直角坐标系的两个量,所以三维只是将平面加了一个z而已”注意,这段说辞的意思一般来说就是一个水平平面多增了一个高叫“z”,但是这是错的!在讲平面直角坐标系前,我们对于长方形、正方形,准确来说叫矩形的几何图形计算面积时会说“长乘宽等于其面积”但在往其他地方走一下可知:三角形叫高,是不是因为其所谓的宽(长)没有在这几何图形上,从而换了说法?
三角形的那个没有在自己身上却进入计算的那一条边叫“高”(直角三角形除外,其高可以算作在一条直角边上),平行四边形也叫“高”(特殊的,长方形的高可以算作在一条边上),甚至是梯形也叫“高”(依旧有特殊) 那...矩形能叫“高”吗?其实从我们接触矩形的时候就不叫“长”与“宽”了,叫“底”与“高”,所以并不是换了说法,而是为了我们自身的理解叫成了“长”与“宽”。当我们开始接触三维,也就是立体几何图形时,方便后续理解,改回正确叫法:“底”“高”。
了解完这些,你应该会知道为何“x,y是二维也就是平面直角坐标系的两个量,所以三维只是将平面加了一个z而已”这段话是错的了吧,知道就看下一自然段,不知道继续看:“z”是我们常说的高,但在三维运用中,“z”只是二维上的高,“x”是二维上的底,那不用多说,“y”是啥?(以免还有人不知道,“y”是二维在不考虑平面直角坐标系中不存在的,也就是三维上的高)
跟我一样玩MC的小伙伴,在按下键盘上F3时,可以看见所处坐标,当你在不跳跃,只按下“w a s d”时,就会发现“x”与“z”坐标变化了,但“y”坐标始终没有变化(开自动跳跃的可以再去过一次清明节了),现在知道为什么了吧。
重头戏 四维
有过这方面知识储备的小盆友应该会知道,四维包含三个空间维度与一个时间维度,三个空间维度就是上文的“x z y”,既已理解四维,看下一自然段,不知的继续看:想象一个房间,这个房间里有一个盒子,过了一个单位的时间后,盒子变成了糖果,又过了一个单位的时间后,有一个不愿意透露姓名的小盆友一个瞬移进来迅速吃掉了糖果,又瞬移出去了,房间里甚都没有。又过了一个单位的时间,房间里莫名多出一个卡片。好,故事结束,当我们把这个房间里的状态以一个数组(列表)a以1开始来存储,那便是:a[1]=“盒子”,a[2]=“糖果”,a[3]=“NULL”(代表空),a[4]=“卡”。这就是时间维度的存贮,一个单个单个的个体组成的一维时间维度,相当于一个0维的空间维度(一个点)被一个当把每个时间单位状态都记录下来的数组(列表)存了起来。若这个房间不再是一个一个的存,像第一个时间单位,不再只有一个盒子,而同时拥有一个盒子,一个袋子,设存储盒子这个位子的单独变化(盒子->糖->NULL->卡片)的数组(列表)为a1,若是袋子这个位子也在单独变化,则有一个a2数组(列表)来存储这个位子的变化,这就是两个时间线的变化量存储,但这里两个数组(列表)所表述的的都是这个房间里的变化,并且所记录位子也不重复,所以这里理应合并为一个数组(列表),一个2 * 4二维的数组(列表),但是表述的是一个时间维度与记录每个时间的两个位子状态的维度,而非“x”与“z”的维度。此时我们再延伸,这些位子有固定摆放顺序,不在只有两个位子,而是有四个位子摆成了2*2的样子,且每个位子与上述描述相同,那么这个a数组便改为三维数组(列表),同样是一个时间维度与一个“x”还有一个“z”组成的3维,而非“x”“z”“y”。最后,4个位子变成了8个,摆成了2 * 2 * 2的立体位子,且位子记录描述上同,就会是一个时间维度,与一个“x”和“z”还有一个“y”。再...我们第一次说的记录为a[时间],则第二次为a[时间][x],第三次a[时间][x][z],第四次便是a[时间][x][z][y]。这就是我们的四维数组(列表)。恭喜你理解啦!(没理解?重看这一自然段“:(”
)
别说了,ACgo网站是个编程网站,且c++用户居多(据我了解),所以四维空间该如何在代码中运用呢?
#include <bits/stdc++.h>
using namespace std;
int main(){
int a[10];
int b[10][10];
int c[10][10][10];
int d[10][10][10][20];
return 0;
}
仔细看这四个数组(此乃c++数组,学P的理解成列表)
第一个相当于将一个 一个 的点变成一个 十个 的点,且这十个点连续;
第二个在第一个基础上,将每个 一个 的点变成每个 十个 的点,且这 每个 十个点连续;
第三个再在第二个基础上,将每个 一个 的点变成每个 十个 的点,且这 每个 十个点连续;
第四个同理。
简的来说第四个就是一个10 * 10 * 10的点阵,变成10 * 10 * 10的 长度为20的数组 阵
用处呢?
在记忆化搜索中兴许有用
主要还是在DP(动态规划)上作每个状态量的记录。
======================
======================
======================
草草结束
希望这篇来自我自己的投稿能帮助到你理解四维空间转三维的原理来推论自己多维DP的代码原理以防报错后急着找不到从何下手
最后说一个东西,由于内容价值太小,就不单独发讨论了
在m=2时
cout<<n%m;
与
if(n%m){
cout<<1;
}else{
cout<<0;
}
其实是不等价的(不考虑时间复杂度,只考虑代码运行后的效果)
感谢您抽出时间观看完此文,若有错误,欢迎您在评论区留言,我会抽空回复的,谢谢

全部评论 7
啪啪啪
24分钟前 来自 浙江
0没有 cdq 吗,举报😡
4小时前 来自 广东
0那是啥?能吃吗?

3小时前 来自 四川
0我是真不懂

3小时前 来自 四川
0没有 cdq 吗,举报😡
1小时前 来自 广东
0
四维不一定是时间维度
5小时前 来自 北京
0孩子,你真的懂吗?
3小时前 来自 四川
0孩子,你真的懂吗?
1小时前 来自 北京
06
1小时前 来自 浙江
0
详见《三体》《三体II》《三体III》
5小时前 来自 北京
0你也看"三体"?
5小时前 来自 江苏
0好消息,你看三体了,坏消息,看书只看一半
3小时前 来自 四川
0别人三体里也有提到过“维度说”,刘慈欣也发过话:“理论上四维就是时间”
3小时前 来自 四川
0
而如果要聊到四维的话可以把三维理解成平面,则四维为立体
5小时前 来自 北京
0你的意思是将0维无视掉了,那空间的基本维度就没有了
3小时前 来自 四川
0甚至可以将你的这一句话理解成世界上没有点
3小时前 来自 四川
00维是在1维上的点,1维是线
1小时前 来自 北京
0
在三维世界中可以完全观测到二维人(包括大脑),所以三维人可以轻而易举地干掉二维人,这就是降维打击
5小时前 来自 北京
0跟我的主题有关吗?
3小时前 来自 四川
0而且,二维生物真的是人吗?说辞也应该是“二维生物”而不是“二维人"
3小时前 来自 四川
0有关
1小时前 来自 北京
0
聊我ID的,搭四!!

6小时前 来自 四川
0坏了本来没注意到 现在想歪了(
6小时前 来自 上海
0因为一开始有人怼着我ID发问,所以发的这个
3小时前 来自 四川
0并非口渴
1小时前 来自 浙江
0
































有帮助,赞一个