新手守护
题目链接: 酷町堂:4701
#include <iostream>
#include <iomanip>
using namespace std;
int n,m,r,u,l,d,k=1;
int a[110][110];
int main(){
cin>>n>>m;
u=l=1;
d=r=n;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>a[i][j];
}
}
while(k<=n*n){
for(int i=l;i<=r;i++){
cout<<a[u][i]<<" ";
}
u++;
for(int i=u;i<=d;i++){
cout<<a[i][r]<<" ";
}
r--;
for(int i=r;i>=l;i--){
cout<<a[d][i]<<" ";
}
d--;
for(int i=d;i>=u;i--){
cout<<a[i][l]<<" ";
}
l++;
}
return 0;
}
中级守护
首先给x,y赋值:
x=1,y=0;
接着while套4个while:
循环(填的数字个数小于等于n*m){
内部先往下走走到头
再往左走走到头
然后往上走走到头
最后往右走走到头
}
循环(k小于等于n*m){
循环(y小于n且a[x][y+1]不等于0){
y+1
输出(自己想)
置零(a[x][y])
计数器++
}
循环(x大于m且a[x+1][y]不等于0){
x-1
输出(自己想)
置零(a[x][y])
计数器++
}
循环(y大于1且a[x][y-1]不等于0){
y-1
输出(自己想)
置零(a[x][y])
计数器++
}
循环(y小于n且a[x-1][y]不等于0){
x-1
输出(自己想)
置零(a[x][y])
计数器++
}
}
即可AC!!
邹正洋在2022-03-07 13:13:17追加了内容
循环(){
先往右走
在往下走
然后往左走
最后往上走
}