スパイラルマトリクス指定座標の値を求める
スパイラルマトリクス定義:スパイラルマトリクスとは、1行目から右側に大きくなり、下に大きくなり、左に大きくなり、上に大きくなるスパイラルマトリクスを指します.
座標(4,3)に対応する数字は34です.
関数を定義し、n,x,y(nはスパイラルマトリクスの次数、x,yはそれぞれx軸、y軸座標)を入力し、n次スパイラルマトリクス座標(x,y)に対応する数値を返します.
座標(4,3)に対応する数字は34です.
関数を定義し、n,x,y(nはスパイラルマトリクスの次数、x,yはそれぞれx軸、y軸座標)を入力し、n次スパイラルマトリクス座標(x,y)に対応する数値を返します.
#include
#include
#define MIN(x, y) ({ \
typeof(x) _min1 = (x); \
typeof(y) _min2 = (y); \
(void) (&_min1 == &_min2); \
_min1 = 1 && _x <= n);
assert(_y >= 1 && _y <= n);
const int ulimit = n - 1, x = _x - 1, y = _y - 1;
int i, minIdx = -1, maxIdx = -1;
int sval = 0, result = 0;
minIdx = MIN( MIN(x, ulimit - x), MIN(y, ulimit - y) );
sval = 1;
for(i=0; i