题意:在一个棋盘图中,可以放程序员,然而上下左右临近的程序员会互相攻击,要尽量多的放程序员。求程序员的个数,及排列阵。C表示coder,.表示障碍
分析:这是一道技巧题,只要分奇偶讨论即可
样例:
Input
2
Output
2
C.
.C
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int n;
while(scanf("%d",&n)==1)
{
if(n==1)
{
printf("1\nC\n");
continue;
}
if(n&1)
{
printf("%d\n",(n*n+1)/2);
for(int i=1;i<=n;i++)
{
for(int j =1;j<=n;j++)
{
if((i+j)&1)
printf(".");
else
printf("C");
}
printf("\n");
}
}
else
{
printf("%d\n",(n*n)/2);
for(int i=1;i<=n;i++)
{
for(int j =1;j<=n;j++)
{
if((i+j)&1)
printf(".");
else
printf("C");
}
printf("\n");
}
}
}
return 0;
}
本文探讨了一个有趣的程序员放置问题:在一个棋盘图中放置尽可能多的程序员,使得相邻的程序员不会互相攻击。通过奇偶讨论的方法给出了具体的实现算法,并提供了完整的代码示例。
2337

被折叠的 条评论
为什么被折叠?



