列表

详情


NC213757. 积木

描述

scimoon 有一个包含了 个小方块的立方体(比如,三阶魔方就是一个包含了 个小方块的立方体)

我们称:两个方块是相邻的当且仅当他们有一个公共的面

现在 scimoon 想要给每个小方块上黑白两色之一,使得:

与一个黑色方块相邻的方块恰好有两个是黑色的

与一个白色方块相邻的方块恰好有两个是白色的

由于这个问题非常困难,所以 scimoon 想让聪明的你解决这个问题

输入描述

一个整数 n,意义与题目描述中一致

输出描述

如果没有解,请输出 -1,否则,请你输出这个立方体

输出方式为:自底向上输出 n 个 的矩阵,第 i 个矩阵中的数 (j,k) 代表第 i 层,第 j 行,第 k 列的方块的颜色

一个方块是黑色的请输出 0,否则输出 1

示例1

输入:

2

输出:

1 1
0 0
1 1
0 0

示例2

输入:

1

输出:

-1

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++(clang++11) 解法, 执行用时: 43ms, 内存消耗: 1628K, 提交时间: 2020-11-25 13:43:11

#include<stdio.h>
int n,f;
int main()
{
	if(scanf("%d",&n),n%2==1)
	printf("-1\n");
	else for(int i=0;i<n;i++)
	for(int j=0;j<n;j++)
	for(int k=0;k<n;k++)
	{
		if(k!=0)
		putchar(' ');
		f=i%4<=1?0:1,f=j%2==1?f:!f,f=k%4<=1?f:!f,printf("%d",f);
		if(k==n-1)
		putchar('\n'); 
	}
	return 0;
}

上一题