题目描述:奇特的立方体
任意给出8个整数,将这8个整数分别放在一个立方体的八个顶点上,要求检验每个面上的四个数之和相等这个条件能否被满足。

输入

一次输入8个整数

输出

YES或者NO
YES表示可能构成满足条件的立方体
NO则表示不能

样例输入

1 2 3 4 5 6 7 8

样例输出

YES

思路:标记8个顶点的位置,构建子空间树即可。重点是计算每个面的顶点和!!!!!
// 奇特的立方体.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h" #include <iostream>
#include <cstring>
using namespace std; const int MAX = ;
int n = , flag, arr[MAX]/*8个数字*/, vis[MAX]/*8个位置是否放了*/,map[MAX]/*每个位置上方的数字*/; void printa()
{
for (int i = ; i < n; i++) cout << map[i] << " ";
cout << endl;
} int check()
{
//printa();
int s[] = { };
s[] = map[] + map[] + map[] + map[];
s[] = map[] + map[] + map[] + map[];
s[] = map[] + map[] + map[] + map[];
s[] = map[] + map[] + map[] + map[];
s[] = map[] + map[] + map[] + map[];
s[] = map[] + map[] + map[] + map[]; for (int i = ; i < ; i++)
{
if (s[i - ] != s[i]) return ;
} //cout << "sum:" << s[0] << endl;
return ;
} void DFS(int pos)
{
//cout << "pos:" << pos << endl;
if (flag) return;
if (pos >= n)
{
if (check()) { flag = ;}
return;
} for (int i = ; i < n; i++)
{
if (!vis[i])
{
vis[i] = ;
map[i] = arr[pos];
DFS(pos+); vis[i] = ;
map[i] = ;
}
} } int main()
{
for (int i = ; i < n; i++) cin >> arr[i]; flag = ;
memset(vis, , sizeof(vis));
memset(map, , sizeof(map)); DFS(); if (flag) cout << "YES" << endl;
else cout << "NO" << endl; return ;
}

最新文章

  1. 项目 CTR预估
  2. MIT 6.828 JOS学习笔记16. Lab 2.2
  3. LOMA280保险原理读书笔记
  4. jQuery学习笔记---兄弟元素、子元素和父元素的获取
  5. 2016.9.14 JavaScript入门之七面向对象和函数
  6. dao层实现类的常见写法
  7. layer.js:2 Uncaught TypeError: Cannot read property &#39;extend&#39; of undefined
  8. Linux中一些目录名称的含义
  9. 深入GDI图像显示
  10. z-index要同级比较,absolute包含块外有overflow-hidden
  11. Struct初学的,页面跳转
  12. C#的匿名委托 和 Java的匿名局部内部类
  13. Github SSH 的key 生成步骤下
  14. 中缀表达式得到后缀表达式(c++、python实现)
  15. css布局 - 工作中常见的两栏布局案例及分析
  16. Linux系统启动排错实验集合
  17. idea调试springmvc出现java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
  18. python 喜马拉雅 音乐下载 演示代码
  19. 配置使用sourcemap调试vue源码爬坑
  20. JavaScript中的数据属性和访问器属性

热门文章

  1. 三 Spring对于延迟加载问题的解决
  2. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 表格:表示一个警告的操作
  3. jqGrid 多选复选框 编辑列 方法事件
  4. emWin 模拟器环境搭建
  5. php 实现店铺装修5
  6. 089、Java中String类之利用构造方法实例化
  7. IOS switch-case知多少
  8. Lesson 45 Of men and galaxies
  9. Mysql8.0免安装包配置方法
  10. 吴裕雄--天生自然JAVA面向对象高级编程学习笔记:接口的基本实现