CF45J 题解
题目传送门。
题意:题目已经概括的很清楚了。
思路:
通过枚举,我们可以发现有
情况 \ |
||
---|---|---|
不难发现,在这些情况下的
if(m+n<5)cout<<-1;
对于
if(m==1&&n==1){
cout<<1;
return 0;
}
对于其他情况,可以分段编数:
对于
-
若
,将其顺序在 区间内编数。 -
若
,将其顺序在 区间内编数。
例:
其中,
根据实验,此方法可行。
#include<bits/stdc++.h>
using namespace std;
int a[101][101];
int main(){
int m,n;
cin>>m>>n;
if(m==1&&n==1){
cout<<1;
return 0;
}
if(m+n<5)cout<<-1;
else{
int t=1,q=(m*n)/2+1,cnt=0;
for(int i=1;i<=m;i++){
for(int j=1;j<=n;j++){
cnt++;
if((i+j)%2)cout<<t++;
else cout<<q++;
cout<<' ';
}
}
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】