输入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 ;
}

最新文章

  1. 操作系统开发系列—12.b.从Loader跳入保护模式
  2. HTML学习开篇
  3. java使用dom4j解析xml文件
  4. java语句类型
  5. 【Tsinghua OJ】灯塔(LightHouse)问题
  6. 无法连接vCenter Server清单https://IP:10443
  7. ios开发 AFNetworking的基本使用方法
  8. CSS截取字符串
  9. ACM 中常用的算法有哪些?
  10. 基于S5pv210流媒体server的实现之网络摄像头(by liukun321 咕唧咕唧)
  11. Linux概念架构的理解(转)
  12. RichErp - export import 用法
  13. QPS/TPS简介
  14. Tomcat启动失败的几种解决办法
  15. Linux中VSFTP的配置
  16. 刷题之路第三题--Longest Substring Without Repeating Characters
  17. rest framework错误笔记——AssertionError: Cannot apply DjangoModelPermissionsOrAnonReadOnly on a view that does not set `.queryset` or have a `.get_queryset()` method.
  18. ArrayList、LinkedList、Vector的区别。
  19. 【RF库Collections测试】List Should Contain Value
  20. Java-01-问题解答

热门文章

  1. UVALive-7303 Aquarium (最小生成树)
  2. C 语言中 free() 函数简单分析
  3. kuangbin_ShortPath F (POJ 3259)
  4. MFC中使用Duilib--2
  5. stl迭代器原理
  6. &lt;input&gt;标签中获得鼠标与否的样式变化——js实现
  7. Object-c 语言
  8. javascript this 代表的上下文,JavaScript 函数的四种调用形式
  9. OpenJudge计算概论-文字排版
  10. MVC 将视图页table导出成excel