codeforces 323A. Black-and-White Cube 构造
2024-10-14 20:02:09
输入n
1 <= n <= 100
有一个n * n * n 的立方体,由n ^ 3 个1 * 1 * 1 的单位立方体构成
要用white 和 black 2种颜色来染这n ^ 3个立方体,要求:
白色的立方体恰好有2个相邻的白色立方体
黑色的立方体恰好有2个相邻的黑色立方体
无解的时候输出-1,有解的时候输出一种染色方案
solution:
n为奇数时,无解,输出 -1
n为偶数时,n = 2时的答案:
bb ww
bb ww
n > 2时,以n=2为中心向外面扩展,进行构造
如 n = 4时,:
wwww bbbb wwww bbbb
wbbw bwwb wbbw bwwb
wbbw bwwb wbbw bwwb
wwww bbbb bbbb bbbb
代码:
//File Name: cf323A.cpp
//Author: long
//Mail: 736726758@qq.com
//Created Time: 2016年05月26日 星期四 10时05分30秒 #include <stdio.h>
#include <string.h>
#include <algorithm>
#include <iostream> using namespace std; const int MAXN = ; char ans[MAXN][MAXN]; char get(int x){
if(x == ) return 'b';
return 'w';
} char get_c(char x){
if(x == 'w') return 'b';
return 'w';
} void update(int x,int y,char c){
for(int i=x;i<=y;i++){
ans[x][i] = c;
ans[i][x] = c;
ans[i][y] = c;
ans[y][i] = c;
}
} bool solve(int n){
if(n % ) return false;
int now = ;
for(int i=;i+i < n+;i++){
update(i,n+-i,get(now^=));
}
return true;
} int main(){
int n;
scanf("%d",&n);
if(!solve(n))
puts("-1");
else{
for(int i=;i<=n;i++){
for(int j=;j<=n;j++){
for(int k=;k<=n;k++){
if(i % )
printf("%c",ans[j][k]);
else
printf("%c",get_c(ans[j][k]));
}
puts("");
}
puts("");
}
}
return ;
}
最新文章
- 操作系统开发系列—12.b.从Loader跳入保护模式
- HTML学习开篇
- java使用dom4j解析xml文件
- java语句类型
- 【Tsinghua OJ】灯塔(LightHouse)问题
- 无法连接vCenter Server清单https://IP:10443
- ios开发 AFNetworking的基本使用方法
- CSS截取字符串
- ACM 中常用的算法有哪些?
- 基于S5pv210流媒体server的实现之网络摄像头(by liukun321 咕唧咕唧)
- Linux概念架构的理解(转)
- RichErp - export import 用法
- QPS/TPS简介
- Tomcat启动失败的几种解决办法
- Linux中VSFTP的配置
- 刷题之路第三题--Longest Substring Without Repeating Characters
- rest framework错误笔记——AssertionError: Cannot apply DjangoModelPermissionsOrAnonReadOnly on a view that does not set `.queryset` or have a `.get_queryset()` method.
- ArrayList、LinkedList、Vector的区别。
- 【RF库Collections测试】List Should Contain Value
- Java-01-问题解答