HDOJ 1030 Delta-wave

本文介绍了一个基于数字坐标计算三维空间中两点间距离的算法。通过将数字映射为三维坐标(X,Y,Z),并针对倒三角形特殊情况进行了Z轴坐标的调整,实现了两个点之间的距离计算。

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

找规律的题,对每一个数字对应一个三维坐标(X,Y,Z)

X::表示在第几层
Y:从左边的边数在第几个
Z::从右边的边数在第几个

对倒三角要特殊处理(Z减一)

如:1(1,1,1)   2(2,2,1)    3(2,1,1)

距离就是坐标差点绝对值。

 1 #include <iostream>
 2 #include <cmath>
 3 
 4 using namespace std;
 5 
 6 struct Note
 7 {
 8     int x;
 9     int y;
10     int z;
11 };
12 
13 int main()
14 {
15     Note a,b;
16     int m,n;
17 while(cin>>m>>n)
18 {
19 
20     int sa=0;
21     int sb=0;
22     int k;
23     int t=ceil(sqrt(m));
24     a.x=t;
25     k=(m-(t-1)*(t-1))/2;
26     a.y=t-k;
27     k=((2*t-1)-m+(t-1)*(t-1))/2;
28     a.z=t-k;
29     if((2*t-1-m+(t-1)*(t-1))%2==0)  sa=1;
30     if(sa==0) a.z=a.z-1;
31 
32     t=ceil(sqrt(n));
33     b.x=t;
34     k=(n-(t-1)*(t-1))/2;
35     b.y=t-k;
36     k=((2*t-1)-n+(t-1)*(t-1))/2;
37     b.z=t-k;
38     if((2*t-1-n+(t-1)*(t-1))%2==0)  sb=1;;
39     if(sb==0)  b.z=b.z-1;
40 
41     //cout<<a.x<<" "<<a.y<<" "<<a.z<<endl;
42     //cout<<b.x<<" "<<b.y<<" "<<b.z<<endl;
43 
44     int ans=0;
45     ans=abs(a.x-b.x)+abs(a.y-b.y)+abs(a.z-b.z);
46 
47     cout<<ans<<endl;
48 }
49 
50 
51     return 0;
52 }

 

转载于:https://www.cnblogs.com/CKboss/archive/2013/04/11/3014178.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值