zoukankan      html  css  js  c++  java
  • codeforces A. Black-and-White Cube 解题报告

    题目链接:http://codeforces.com/problemset/problem/323/A

    题目意思:给定值 k ,需要输出 k 个 k 行 k 列的单位立方体各表示什么颜色(或者是黑色或者是白色)。需要满足的条件是:如果是白色的单位立方体,那么它有且仅有2个白色的相邻单位立方体;如果是黑色的单位立方体,那么它有且仅有2个黑色的相邻单位立方体。要是给出的k不能构成满足这些条件的立方体,输出-1.

          在纸上尝试过用次小的奇数 3 来模拟,发现无论如何都不能满足条件,于是大胆地猜测k是奇数的话是不行的。至于证明就...无能为力啊~希望会的读者能够指点迷津,不胜感激。

          而偶数的话,为了简单起见,姑且用 k = 4 来说:

          第 1 块和第 2 块:

      

         至于第3块和第4块是和前面的两块是相同的。当然1,2块可以交换,但此时3,4块也要交换。至于其他的6,8,....2n都可以这样推。反正对于每一行,如果第1,2列输出的是 b ,那么下次的第5,6列页数输出 b。也就是说会相隔2个空格(这2个空格当然就是输出w了)。

         本人觉得这样的解决方法比较简单,不必费太多的脑筋。读者如果有什么更好的办法,欢迎多多交流。

       

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstdlib>
     4 using namespace std;
     5 
     6 int main()
     7 {
     8     int k, i, j, l;
     9     while (scanf("%d", &k) != EOF)
    10     {
    11         if (k & 1)
    12             puts("-1");
    13         else
    14         {
    15             for (l = 1; l <= k; l++)            //
    16             {  
    17                 if (l & 1)
    18                 {
    19                     for (i = 1; i <= k; i++)        //
    20                     {
    21                         for (j = 1; j <= k/2; j++)  //
    22                         {
    23                             if (j & 1 && (i % 4 == 1 || i % 4 == 2))
    24                                 printf("bb");
    25                             else if (!(j & 1) && (i % 4 == 1 || i % 4 == 2))
    26                                 printf("ww");
    27                             else if (j & 1 && !(i % 4 == 1 || i % 4 == 2))
    28                                 printf("ww");
    29                             else
    30                                 printf("bb");
    31                         }
    32                         printf("
    ");
    33                     }
    34                 }
    35                 else
    36                 {    
    37                     for (i = 1; i <= k; i++)        //
    38                     {
    39                         for (j = 1; j <= k/2; j++)  //
    40                         {
    41                             if (j & 1 && (i % 4 == 1 || i % 4 == 2))
    42                                 printf("ww");
    43                             else if (!(j & 1) && (i % 4 == 1 || i % 4 == 2))
    44                                 printf("bb");
    45                             else if (j & 1 && !(i % 4 == 1 || i % 4 == 2))
    46                                 printf("bb");
    47                             else
    48                                 printf("ww");
    49                         }
    50                         printf("
    ");
    51                     }                
    52                 }
    53                 printf("
    ");
    54             }
    55         }
    56     }
    57     return 0;
    58 }
    59 
    60 
    61     
  • 相关阅读:
    vue子组件向父组件传值
    定义特有属性的对象
    电话号码的校验
    多个图片的显示与隐藏
    原生的ajax请求----(播放托管到爱奇艺上的视频)
    将视频托管到爱奇艺 (第一步)
    2018年春季个人阅读计划
    《软件需求与分析》阅读笔记
    Ngers天气——开发进程4
    软件需求与分析读书笔记3
  • 原文地址:https://www.cnblogs.com/windysai/p/3531903.html
Copyright © 2011-2022 走看看