小样例
大家仔细观察一下下面的列表,看有没有啥特别的地方,或者规律的地方呢?
<0,0> <0,1> <0,2>
<1,0> <1,1> <1,2>
<2,0> <2,1> <2,2>
画画辅助线,观察一下主对角线上的数字和副对角线的数字,他们相加或者相减会有什么规律呢?大家可以动手试一试!
1.主对角线
主对角线上<0,0>、<1,1>、<2,2>,他们的i相加分别等于0,2,4,好像没啥规律;那我们再相减试试!咦惹!我们可以发现他们相减都等于0!这个很重要呢!(y-x)
那么与主对角线平行的对角线呢?我们在试试看!找到点<1,0>、<2,1>和<0,1>、<1,2>,我们再把他们相减试试看!我们可以发现:他们两组相减(y-x)分别等于-1和1!这就是主对角线上的规律!y-x等于一个常数!那我们在代码应用中要怎么使用呢?
//代码实现
int a[4]; //记录每一条与主对角线平行的线(包含主对角线)
a[y-x+3] =1; //即是对应的线的数组位置!
//如主对角线就是由a[3]代表!
2.副对角线
副对角线上<0,2><1,1><2,0>,我们把他们相加试试看,分别等于2,2,2!咦惹!这是一个很明显的规律呢!没错他们的规律就是x+y等于一个常数!我看看其他位置的,<0,1><1,0>和<1,2><2,1>他们相加分别等于1和3,相比大家已经知道他们的规律了吧!
int a[4];
a[i+j];
//例子:a[1+1]=a[2+0]=a[0+2]代表的就是主队角线
3.最后
希望这些对大家有所帮助!谢谢!