蓝桥题目:B-25、回形取数
程序员文章站
2022-06-12 20:52:54
...
#include <iostream>
using namespace std;
struct num{
int num;
bool flag;
}arr[200][200];
int main(){
int m, n;
cin >> m >> n;
// m = 3;
// n = 3;
for(int i = 0; i < m; ++i){
for(int j = 0; j < n; ++j){
cin >> arr[i][j].num;
arr[i][j].flag = 1;
}
}
int cnt = 1;
// for(int i = 0; i < m; ++i){
// for(int j = 0; j < n; ++j){
// arr[i][j].num = cnt++;
// arr[i][j].flag = 1;
// }
// }
// for(int i = 0; i < m; ++i){
// for(int j = 0; j < n; ++j){
// cout << arr[i][j].num << " ";
// }
// cout << endl;
// }
cout << arr[0][0].num;
arr[0][0].flag = 0;
int i = 0, j = 0;
cnt = 1;
while(cnt < m*n){
while(i + 1 < m && arr[i+1][j].flag){//down
cout << " " << arr[++i][j].num;
arr[i][j].flag = 0;
cnt++;
}
while(j - 1 >= 0 && arr[i][j-1].flag){//left
cout << " " << arr[i][--j].num;
arr[i][j].flag = 0;
cnt++;
}
while(i - 1 >= 0 && arr[i-1][j].flag){//up
cout << " " << arr[--i][j].num;
arr[i][j].flag = 0;
cnt++;
}
while(j + 1 < n && arr[i][j+1].flag){//right
cout << " " << arr[i][++j].num;
arr[i][j].flag = 0;
cnt++;
}
}
return 0;
}