前几天南科大复试机式,遗憾没过,选择题目出现失误,最终50分,多个矩阵相乘哪一题我没有想出到底是哪个刁钻的矩阵卡了我,而南科大只有全部用例通过才有分数,因此机式没过。
第一题是蛇形矩阵,前天机式没有选这题,早知道选这题机式应该就能过关,今天思路+代码只花了23分钟,代码如下,矩阵大小可以自行修改。
#include <iostream>
#include <cstdio>
using namespace std;
short status = 0;
int matrix[10][10];
int main(){
int m, n;
scanf("%d %d", &m, &n);
int sumNum = m*n;
int x = 0, y = n - 1;
for(int i = 0; i < sumNum; i++){
if(status%4 == 0){
matrix[x][y] = i + 1;
x = x + 1;
y = y;
if(x >= m || matrix[x][y] != 0){
status = status + 1;
x = x - 1;
y = y - 1;
}
}
else if(status%4 == 1){
matrix[x][y] = i + 1;
x = x;
y = y - 1;
if(y < 0 || matrix[x][y] != 0){
status = status + 1;
y = y + 1;
x = x - 1;
}
}
else if(status%4 == 2){
matrix[x][y] = i + 1;
x = x - 1;
y = y;
if(x < 0 || matrix[x][y] != 0){
status = status + 1;
x = x + 1;
y = y + 1;
}
}
else if(status%4 == 3){
matrix[x][y] = i + 1;
x = x;
y = y + 1;
if(y >= m || matrix[x][y] != 0){
status = status + 1;
x = x + 1;
y = y - 1;
}
}
}
for(int i = 0; i < n; i++){
for(int j = 0; j < n; j++){
printf("%d ", matrix[i][j]);
}
printf("\n");
}
return 0;
}