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的简单题哦~)

浙公网安备 33010602011771号