Numb
来源:互联网 发布:linux tshark抓RTP包 编辑:程序博客网 时间:2024/05/22 00:14
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int MaxNumber = 29;
struct Position
{
int X;
int Y;
int Z;
};
struct Position locate(int number)
{
struct Position pos;
if (number ==1)
{
pos.X = pos.Y = pos.Z = 0;
return pos;
}
//计算这个数字在第几圈,0,1,2,3。跳出循环时,level为层数,tmp为这层最大的数
int level = 0;
int tmp = 1;
while (tmp < number)
{
level++;
tmp += 6*level;
}
//计算这个数字在哪个边,共有6条边,0~5
int side = (tmp - number)/level;
//计算该边的位置,每边共有level个位置,0~level-1
int place = (tmp - number)%level;
int posX;
int posY;
int posZ;
switch (side)
{
case 0: posX = level; posY = place; posZ = level-place; break;
case 1: posX = level-place; posY = level; posZ = -1*place; break;
case 2: posX = -1*place; posY = level-place; posZ = -1*level; break;
case 3: posX = -1*level; posY = -1*place; posZ = place-level; break;
case 4: posX = place-level; posY = -1*level; posZ = place; break;
case 5: posX = place; posY = place-level; posZ = level; break;
default:break;
}
pos.X = posX;
pos.Y = posY;
pos.Z = posZ;
return pos;
}
int getResult(int number1, int number2)
{
struct Position pos1 = locate(number1);
struct Position pos2 = locate(number2);
vector<int> length;
length.push_back(abs(pos1.X - pos2.X));
length.push_back(abs(pos1.Y - pos2.Y));
length.push_back(abs(pos1.Z - pos2.Z));
sort(length.begin(), length.end());
return length[0]+length[1];
}
int main()
{
int a = getResult(1,7);
int b = getResult(1,2);
cout << a << endl <<b <<endl;
return 0;
}
- Numb
- 171. Excel Sheet Column Numb
- 运用位运算会比较简单 Binary Numb…
- java打jar包的异常一:could not find the main class,java.lang.UnsupportedClassVersionError: Bad version numb
- This is the first problem for test. Since all we know the ASCII code, your job is simple: Input numb
- C++内存池实现
- C#高级编程四十八天----列表
- Android安卓官方网站Activity生命周期非常形象的例子!
- 股票学习(k线分析)
- Android布局(二)RelativeLayout
- Numb
- c语言 数组和字符串
- hdu 1711 KMP算法模板题
- JAVA编程思想_笔记(六)
- for循环的嵌套
- Linux kernel 分析之十七:设计模式-用C来实现继承和模板
- 1004. Counting Leaves (30)
- C++sort函数的用法
- java动态代理