问题在于:当n是奇数时最中间的数赋不上值

#include <bits/stdc++.h>
using namespace std;
int arr[105][105];
void generator(int n){
int a=1;
int b=n;
int c=1;
while(b-a>=1){
for(int j=a;j<=b;j++){
arr[a][j]=c;
arr[b][j]=c;
}for(int i=a;i<=b;i++){
arr[i][a]=c;
arr[i][b]=c;
}
a++;
b--;
c++;
}
}
int main(){
int n;
cin>>n;
generator(n);
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cout<<arr[i][j]<<' ';
}
cout<<endl;
}
return 0;
}

请给出思路而非具体代码,谢谢