CF45J
CF45J 题解
原题链接:Planting Trees
题目分析:
-
当 \(n=m=1\) 时,直接输出 \(1\)。
-
当 \((n+m)>5\) 时,就将大数和小数交叉放即可。
-
当 \((n+m)<5\) 时,是肯定是不行的,输出 \(-1\)。
这时就会有人问第二种情况的大小数分别是什么?
大数:\((n+m)/2\sim n\times m\)。
小数:\(1\sim(n+m)/2\)。
也不多说了,上代码!
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int n,m;
int main(){
cin>>n>>m;
if(n+m<5&&(n!=1||m!=1)){
cout<<-1;
return 0;
}
int l=1,b=n*m/2+1;
for(int i=0; i<n; i++){
for(int j=0; j<m; j++)
if((i+j)%2==1) cout<<l++<<' ';
else cout<<b++<<' ';
cout<<endl;//别忘了换行
}
return 0;
}
//P上水印
//┭┮﹏┭┮