zoukankan      html  css  js  c++  java
  • codeforces 323A. Black-and-White Cube 构造

    输入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 = 103;
    
    char ans[MAXN][MAXN];
    
    char get(int x){
        if(x == 1) 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 % 2) return false;
        int now = 0;
        for(int i=1;i+i < n+1;i++){
            update(i,n+1-i,get(now^=1));
        }
        return true;
    }
    
    int main(){
        int n;
        scanf("%d",&n);
        if(!solve(n))
            puts("-1");
        else{
            for(int i=1;i<=n;i++){
                for(int j=1;j<=n;j++){
                    for(int k=1;k<=n;k++){
                        if(i % 2)
                            printf("%c",ans[j][k]);
                        else
                            printf("%c",get_c(ans[j][k]));
                    }
                    puts("");
                }
                puts("");
            }
        }
        return 0;
    }
  • 相关阅读:
    HPU--1189 Ou à
    实数向整数的强制转换
    HPU--1166 阶乘问题(一)
    HPU--1163 大数A+B
    阿斯伯格综合征完全指南各章链接
    思维改变生活第10章、有效沟通
    Mathematica(MMA)闪电入门系列 目录与说明
    第二语言习得理论介绍
    第二语言习得实践方法
    复赛注意事项:关于文件读写的格式
  • 原文地址:https://www.cnblogs.com/-maybe/p/5530110.html
Copyright © 2011-2022 走看看