题解:B3755 [信息与未来 2019] 方格覆盖
此题思路如下:
看题,模拟即可。
首先我们可以用一个二维数组
然后循环,如果当前可以放且没用放过,判断下与右是否能放且未放置过,能放就放,并且在答案二维数组
最后输出答案数组即可。
代码如下:
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=110;
int n,m,t=1,a[N][N],b[N][N];
signed main(){
cin>>n>>m;
for(int i=1;i<=m;i++){
a[i][i]=1;
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(a[i][j]==0&&b[i][j]==0){
if(a[i][j+1]==0&&j+1<=n&&b[i][j+1]==0){
b[i][j+1]=t;
b[i][j]=t;
t++;
}
else{
if(a[i+1][j]==0&&i+1<=n&&b[i+1][j]==0){
b[i+1][j]=t;
b[i][j]=t;
t++;
}
}
}
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cout<<b[i][j]<<" ";
}
cout<<"\n";
}
return 0;
}
后记:谢谢管理员审核,管理员辛苦了。