蛇形矩陣生成及索引

2021-07-16 23:38:25 字數 1853 閱讀 4378

最近面試某網際網路公司碰到一道程式設計題,要求寫乙個蛇形矩陣的生成函式以及索引函式,感覺挺有意思的,實現**如下

void snakematrix(int** matrix, const

int dim, const

int direction)

if (direction != 0 && direction != 1)

int x = 0;

int y = 0;

int value = 1;

int head = direction;

matrix[y][x] = value;

if (dim == 1)

if (direction == 0) else

matrix[y][x] = ++value;

while (x < dim && y < dim)

if (head == 0) else else

matrix[y][x] = ++value;

}} else else else

matrix[y][x] = ++value;}}

} std::cout

<< "snake shape matrix: "

<< std::endl;

for (int i = 0; i < dim; ++i)

std::cout

<< std::endl;

}}

void find(const

intdim, const

int value, const

int start, int& x, int& y)

for (int i = 1; i <=dim; ++i)

else

else

}else

else }}

} for (int i = dim - 1; i >= 1; --i)

else

else

}else

else }}

}}

int main(int argc char *argv)

int** matrix = new

int*[dim];

for (int i = 0; i < dim; ++i)

char direction;

std::cout

<< "input direction, 'r' or ' d' : "

<< std::endl;

std::cin >> direction;

while (direction != 'r' && direction != 'd')

int start = direction == 'r' ? 0 : 1;

snakematrix(matrix, dim, start);

int x, y;

int value;

std::cout

<< "input search value: "

<< std::endl;

std::cin >> value;

find(dim, value, start, x, y);

std::cout

<< value << " in row: "

<< y << " column: "

<< x << std::endl;

for (int i = 0; i < dim; ++i)

delete matrix;

getchar();

return

0;}

螺旋矩陣 蛇形矩陣

問題描述 給定乙個包含m行n列的m x n矩陣,程式設計按照螺旋順序,輸出該矩陣中的所有元素。輸入有多個矩陣。每個矩陣資料的第1行有兩個整數m和n,接著是乙個mxn矩陣的描述,有m行,每行有n個整數 輸出對每個矩陣資料,按照螺旋順序輸出矩陣陣列的元素。輸入樣例 3 31 2 3 4 5 6 7 8 ...

1160 蛇形矩陣

時間限制 1 s 空間限制 128000 kb 題目等級 silver 題解 小明玩乙個數字遊戲,取個n行n列數字矩陣 其中n為不超過100的奇數 數字的填補方法為 在矩陣中心從1開始以逆時針方向繞行,逐圈擴大,直到n行n列填滿數字,請輸出該n行n列正方形矩陣以及其的對角線數字之和.輸入描述 inp...

1160蛇形矩陣

解題思路 從最後乙個數n n,從右邊往左邊模擬,即n n存放在二維陣列a x y 裡,n n 1存放在a x y 1 直到y i i i,2,n 1 等於1,這個方向模擬完畢,類似的,再從下往上模擬,再從左往右模擬,再從上往下模擬,順時針模擬,直到n n i i 1,2,n n 1 等於1.其中要注...