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