c++ - 如何在 C++ 中生成具有奇怪模式的数字

标签 c++ logic

<分区>

我想知道是否有一种有效的方法可以在 C++ 中生成一组这 4 个数字:

(0,2,1,0) ; // A
(1,2,2,0) ; // B
(2,2,3,0) ; // C
(4,1,0,3) ; // D
(4,2,5,0) ; // E
(5,1,1,3) ; // F
(5,2,6,0) ; // G
(6,1,2,3) ; // H
(6,2,7,0) ; // I
(7,1,3,3) ; // J
(8,1,4,3) ; // K
(8,2,9,0) ; // L
(9,1,5,3) ; // M
(9,2,10,0) ; // N
(10,1,6,3) ; // O
(10,2,11,0) ; // P
(11,1,7,3) ; // Q
(12,1,8,3) ; // R
(12,2,13,0) ; // S
(13,1,9,3) ; // T
(13,2,14,0) ; // U
(14,1,10,3) ; // V
(14,2,15,0) ; // W
(15,1,11,3) ; // X
(16,1,12,3) ; // Y
(16,2,17,0) ; // Z
(17,1,13,3) ; // A1
(17,2,18,0) ; // B1
(18,1,14,3) ; // C1
(18,2,19,0) ; // D1
(19,1,15,3) ; // E1

" 16  Y  12  R  8  K  4  D  0"    
"  Z      S     L     E     A"    
" 17 A1  13  T  9  M  5  F  1"    
" B1      U     N     G     B"    
" 18 C1  14  V  10 O  6  H  2"    
" D1      W     P     I     C"    
" 19 E1  15  X  11 Q  7  J  3"    

将上图中的数字视为一个正方形,将字母 A 到 E1 视为相邻正方形边的交集。在上面的列表中,每个集合 (A,B,C..) 都有 4 个数字。位置 1 和 3 的数字代表方 block 编号。位置 2 和 4 处的数字表示方形边缘的类型(top - 0,right - 1,bottom - 2,left - 3)。第一组数字代表交点A。如上图所示,它是0号方 block (下边--2)和1号方 block (上边--0)的交点。所以,A是0,2 ,1,0 。

同理,B是方 block 1(底边--2)和方 block 2(顶边--0)的交集。因此 B 是 (1,2,2,0)。类似地,C 是 (2,2,3,0) -- 方 block 2(底边 - 2)和方 block 3(顶边 - 0)的交集

问题是如何在 C++ 中生成这些数字

最佳答案

诀窍是按行和列遍历数组:

 4  3  2  1  0
---------------
16 12  8  4  0 | 0
17 13  9  5  1 | 1
18 14 10  6  2 | 2
19 15 11  7  3 | 3

例如,第 1 列和第 2 行表示第 6 个方 block 。

为了以这种方式以正确的顺序遍历方 block ,我们使用这样的嵌套循环:

int num_cols = 5;
int num_rows = 4;
for(int col=0; col<num_cols ; ++col)
{
  for(int row=0; row<num_rows ; ++row)
  {
    cout << "this is column " << col << ", row " << row << endl;
  }
}

现在我们只需要弄清楚在特定位置要做什么。方格数是多少?您应该很容易看出它是 col*num_rows + row。而下方方 block 的编号(如果有的话)是col*num_rows + row + 1右边的行编号 em>(如果有)是 (col-1)*num_rows + row。因此,例如,如果 col 为 1 且 row 为 2,则要报告的边为

(6,1,2,3)
(6,2,7,0)

够了吗?

关于c++ - 如何在 C++ 中生成具有奇怪模式的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19239636/

相关文章:

c++ - 链表实现链表

c++ - 拦截 C++ 方法调用(Tuxedo、tpcall)

c - 如何以 C 程序修复我的 "Guess the Movie"游戏中的逻辑错误

javascript - 检查商店是否营业。 MySQL Node.js 业务逻辑

rest - 如何通过postman调用Azure Search相关的REST API?

php - 编程逻辑 - 在特定时间间隔后仅更新数据库一次

c++ - 声明 const 成员函数的语法返回一个裸函数指针,没有 typedefs?

c++ - 如何在 WinCE 中创建 .bmp

c++ - 私有(private)成员的 QT/C++ 类声明对构造函数不可见?

Python通过解析找出所有路径