C++ 如何在C++;

C++ 如何在C++;,c++,logic,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) ; //

我想知道是否有一种有效的方法可以在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处的数字表示方形件编号。位置2和4处的数字表示方形边的类型(顶部-0、右侧-1、底部-2、左侧-3)。第一组数字表示交点A。如上图所示,它是平方数0(底边--2)和平方数1(顶边--0)之间的交点。因此,A是0,2,1,0

类似地,B是正方形1(底边--2)和正方形2(顶边--0)的交点。因此B是(1,2,2,0)。类似地,C是(2,2,3,0)——正方形2(底边-2)和正方形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

为了以正确的顺序在正方形上迭代,我们使用如下嵌套循环:

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;
  }
}

这就足够了吗?

一旦你找到了这个公式或算法,就很容易实现。一旦你这么做了,我很乐意帮助你。@mvp:好的,我会在我能弄明白的时候更新。这很简单。对于C++中的循环,你理解<代码>吗?什么部分给你带来麻烦?@Beta:前两个数字的形式是:x,1;x、 二,;x+1,1;x+2,2。后两个数字的形式为x,0;y、 三,;x+1,0;y+1,3。但是,经过3个步骤后,模式会发生一点变化。这部分给我带来麻烦。你理解C++中的<代码>代码>循环吗?谢谢。这就足够了。我会从现在开始照顾你。
(6,1,2,3)
(6,2,7,0)