题目:
分析:先将二维数组全都初始化为1,然后从第一个位置开始放蛋糕,然后计数器加加,并且每在一个位置放了蛋糕后,里这个位置距离为2的行、列都不能放,则将其置为0,那么计数器每次就加位置上是1的数据,并且将距离为2的置掉就行。(即一边走一边抛弃不能放置的位置,并且一边统计)
int main()
{
int W;//长(列)
int H;//宽(行)
cin>>W>>H;
vector<vector<int>> vv;
vv.resize(H);
for(auto& e: vv)
{
e.resize(W,1);//先将二维数组都初始化成1
}
int count=0;
for(int i=0;i<H;i++)
{
for(int j=0;j<W;j++)
{
if(vv[i][j]==1)
{
count++;
//v[i][j]这个位置是放了蛋糕的,那么离它行、列距离为2的地方就不能放
//将离vv[i][j]并且这一行的距离是2的置0
if(i+2<H)
{
vv[i+2][j]=0;
}
//将离vv[i][j]并且这一列的距离是2的置0
if(j+2<W)
{
vv[i][j+2]=0;
}
}
}
}
cout<<count<<endl;
return 0;
}