不要二

    xiaoxiao2023-10-11  188

     

    题目:

    分析:先将二维数组全都初始化为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; }

     

    最新回复(0)