CF1621A Stable Arrangement of Rooks

原题链接(https://codeforces.com/problemset/problem/1621/A)

题目简述:

一个n*n的棋盘上,放上k个车,使得一任意车向上下左右移动一格(这里的车可以上下左右移动任意步数)后不与其他车相撞(注:不能走出棋盘之外)。

分析:

从题目可知,在车上下左右移动一格后不会与其他车相撞,换句话说,两辆车之间至少相隔一行一列,放在对角线上是最优想法,若无解则输出-1。提示:(n+1)/2<k则为无解(若哪里没讲好还请不要介意,可告知我谢谢~)

AC代码:

点击查看代码

void solved() //每个车都会移动一格,所以两车之间至少相隔一行一列
{
    int n,k;
    cin >> n >> k;
    
    if((n+1)/2<k) cout << -1 << endl;
    else
    {
        for(int i=1; i<=n; i++)
        {
            for(int j=1; j<=n; j++)
            {
                if(j&1 && i&1 && j==i && k){ cout << "R"; k--; }
                else cout << ".";
            }
            cout << endl;
        }
    }
}

(800的简单题哦~)

posted @ 2023-04-25 21:51  酒巷清风&  阅读(22)  评论(0)    收藏  举报