为什么这个代码只能拿50分
  • 板块学术版
  • 楼主wanttoac
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/5/27 12:51
  • 上次更新2024/5/27 17:14:19
查看原帖
为什么这个代码只能拿50分
1258100
wanttoac楼主2024/5/27 12:51

[原题链接] (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;
}
2024/5/27 12:51
加载中...