[原题链接] (https://codeforces.com/gym/105183/problem/B)$\newline$ 是哪里没有考虑到吗
#include<bits/stdc++.h>
using namespace std;
int n,m;
char g[105][105];
vector<int> solve(int i){
vector<int>ans;
if(i%2==0){
if(i==2){
ans.push_back(1);
ans.push_back(2);
return ans;
}
int x=i/2;
for(int j=x-1;j>=1;j-=2)ans.push_back(j);
for(int j=x+2;j<=i;j+=2)ans.push_back(j);
return ans;
}
else{
if(i==1){
ans.push_back(1);
return ans;
}
if((i+1)%4==0){
int x=(i+1)/2;
for(int j=x;j>=1;j-=2)ans.push_back(j);
for(int j=x+2;j<=i;j+=2)ans.push_back(j);
return ans;
}
else{
int x=(i+1)/2;
for(int j=x-1;j>=1;j-=2)ans.push_back(j);
for(int j=x+1;j<=i;j+=2)ans.push_back(j);
return ans;
}
}
return ans;
}
int main(){
cin>>n>>m;
vector<int>a=solve(n);
vector<int>b=solve(m);
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
g[i][j]='+';
}
}
for(int i=0;i<a.size();i++){
for(int j=0;j<b.size();j++){
g[a[i]][b[j]]='O';
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cout<<g[i][j];
}
cout<<endl;
}
return 0;
}