试题 算法训练 黑白无常

资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
  某寝室的同学们在学术完之后准备玩一个游戏:游戏是这样的,每个人头上都被贴了一张白色或者黑色的纸,现在每个人都会说一句话“我看到x张白色纸条和y张黑色的纸条”,又已知每个头上贴着白色纸的人说的是真话、每个头上贴着黑色纸的人说的是谎话,现在要求你判断哪些人头上贴着的是白色的纸条,如果无解输出“NoSolution.”;如果有多组解,则把每个答案中贴白条的人的编号按照大小排列后组成一个数(比如第一个人和第三个人头上贴着的是白纸条,那么这个数就是13;如果第6、7、8个人都贴的是白纸条,那么这个数就是678)输出最小的那个数(如果全部都是黑纸条也满足情况的话,那么输出0)
输入格式
  第一行为一个整数n,接下来n行中的第i行有两个整数x和y,分别表示第i个人说“我看到x张白色纸条和y张黑色的纸条”。
输出格式
  一行。如果无解输出“NoSolution.”。否则输出答案中数值(具体见问题描述)最小的那个,如果全部都是黑纸条也满足情况的话,那么输出0
样例输入
2
1 0
1 0
样例输出
0
样例输入
5
3 1
0 4
1 3
4 0
1 3
样例输出
35
数据规模和约定
  n<=8

分析

这题的数据量非常小,n<=8;所以我们可以很快的想到暴力的朴素算法。

因为题目中暗示,可能存在多组解的情况,所以我们需要将每个解结果储存在数组中,以备最后输出之需。

首先,每个人都会给出两个数据,一个是他看到的白纸条人数,一个是他看到的黑纸条人数。当然这两个数据都不包括他自己(废话 )。

于是我们可以很容易的想到使用dfs来遍历可能的结果。

在for循环中遍历给出白纸条的人数【0,n】,然后用dfs来深层遍历并且判断这种情况是否存在,是我们的核心思想。

最后循环判断所得结果中的最小值即可。
参考代码:

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;int n,p;
int b[8];
int a[8][2];
int x, y;
int ans[40],q;//多组解的情况bool check();void dfs(int temp,int t)
{if (t == 0){if (check() == 1){p = 1;for (int i = 0; i < n; i++){if (b[i] == 1){ans[q]=ans[q]*10+(i + 1);//因为这里是从0开始的,所以还要加一}}q++;}return;}for (int i = temp; i >=0; i--){b[i] = 1;dfs(i - 1, t - 1);b[i] = 0;}return;
}bool check()
{bool s = 0;int x0,y0;for (int i = 0; i < n; i++){x0 = x;y0 = y;if (b[i] == 1){x0 -= 1;}else{y0 -= 1;}if (b[i]==1 && (a[i][0] != x0 || a[i][1] != y0))//说真话的人说假话{s = 1;break;}if(b[i]==0 && (a[i][0] == x0 && a[i][1] == y0))//说假话的人说真话{s = 1;break;}}if (s == 0){return true;}else{return false;}
}int main()
{cin >> n;for (int i = 0; i < n; i++){cin >> a[i][0] >> a[i][1];}for (int i = 0; i <=n; i++){x = i;//白色人数y = n - i;memset(b, 0, 8 * 4);dfs(n-1,i);}if (p == 1){int mi=100000000;for (int i = 0; i < q; i++){if (ans[i] < mi){mi = ans[i];}}cout << mi;}if (p == 0)cout << "NoSolution.";return 0;
}

蓝桥杯 黑白无常 朴素算法相关推荐

  1. 【预览】蓝桥杯竞赛python算法笔记 代码模板|吐血总结|蓝桥杯省赛国赛

    [预览]蓝桥杯竞赛python算法笔记 代码模板|吐血总结 完整版链接 文章目录 [预览]蓝桥杯竞赛python算法笔记 代码模板|吐血总结 1 二分算法求分界值 2 双指针算法 2.1 求最长的不包 ...

  2. 蓝桥杯:试题 算法训练 Remember the A La Mode

    蓝桥杯:试题 算法训练 Remember the A La Mode 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 Hugh Samston经营着一个为今年的ICPC世界总决赛的参 ...

  3. 【完整版】蓝桥杯竞赛python算法笔记 代码模板|吐血总结|蓝桥杯省赛国赛

    蓝桥杯竞赛python算法笔记 代码模板|吐血总结 文章目录 蓝桥杯竞赛python算法笔记 代码模板|吐血总结 1 二分 1.1 二分求最大满足(check红色条件) 1.2 二分求最小满足(che ...

  4. 蓝桥杯之Python算法设计系列(二)

    目录 基础算法案例 全套资源点击此处下载 1.特殊回文数 2.特殊回文数 3.A+B案例 4.数组排序 5.序列求和 6.十六进制转八进制 7.十六进制转十进制 8.查找数字出现次数 9.水仙花 10 ...

  5. 蓝桥杯,ACM算法视频及文档资料『免费送』

    欢迎大家加入CSDN-蓝桥杯竞赛社区 https://bbs.csdn.net/forums/lanqiaobei 以下介绍为蓝桥杯参赛视频学习教程资料,以及ACM等高级算法竞赛的高级算法进阶课程(看 ...

  6. 蓝桥杯之Python算法设计系列(一)

    目录 蓝桥杯简介 什么是蓝桥杯? 大赛项目 一.个人赛软件类 二.个人赛电子类 三.青少年创意编程组 四.视觉设计大赛 Python程序设计 注意事项 Python程序语言设计-计算机二级 Pytho ...

  7. 【蓝桥杯】什么算法才是版本答案?近三年(2019-2021)蓝桥杯省赛涉及算法出现频率分析

    2022年的蓝桥杯比赛已经基本报名结束,寒假来临,如何抓住重点,快速掌握各种算法知识,在4月份的蓝桥杯省赛中取得好成绩呢?本文收集了近三年的4场蓝桥杯省赛题目,(2019年,2020年第二场,2020 ...

  8. 蓝桥杯题库 算法提高非vip部分(C++、Java)代码实现(251-280)

    文章目录 ADV-251 Petri Net Simulation cpp: java: ADV-252 Navigation cpp: ADV-256 The Sky is the Limit cp ...

  9. 矩阵乘法 算法训练 试题_蓝桥杯习题集_ 算法训练 矩阵乘法

    原文: 算法训练 矩阵乘法 时间限制:1.0s   内存限制:512.0MB 问题描述 输入两个矩阵,分别是m*s,s*n大小.输出两个矩阵相乘的结果. 输入格式 第一行,空格隔开的三个正整数m,s, ...

最新文章

  1. IIS 伪静态配置(安装ISAPI_Rewrite配置)
  2. 双非山东科技胜过吉大,湖南大学超哈工大,US News2022世界大学排行榜引热议...
  3. 如何使ResNet优于EfficientNet?
  4. 集成的分层强化学习,让人工智能在解决智能问题时表现得更聪明
  5. (一)Python装饰器的通俗理解
  6. STM32开发 -- 添加头文件
  7. 【小白学习C++ 教程】二十三、如何安装和使用 C++ 标准库
  8. Microsoft SQL Server 存储过程
  9. P4389 付公主的背包(生成函数,多项式exp)
  10. java 读 jar外文件_读取Jar包外面的配置文件
  11. 全部博文集锦第三期CHM文件,及十三个经典算法研究PDF文档
  12. 图片自动生成css,CSS Sprites Generator
  13. Java中new Date插入mysql数据库,数据库时间多一秒问题
  14. python画图如何调整图例位置_python图例参数
  15. 突破传统—复旦大学大数据学院张力课题组提出语义分割全新方案
  16. PHP连接mssql的配置
  17. 5000比特量子计算机,量子计算机平台正式发布:拥有5000量子比特
  18. MATLAB恢复编辑器窗口停靠
  19. Spring Cloud Feign--常用的配置
  20. 帮公司面试了一个30岁培训班出来的程序员,没啥工作经验...

热门文章

  1. JS----hover时间延迟设置
  2. 简单java问题 官方说法 java基础 初级第一章
  3. 【曾贤志】Power Map For Excel地图图表视频教程-曾贤志-专题视频课程
  4. php 表单 与数据库查询
  5. Element 对象的使用
  6. 【2021.11综合方案】Ubuntu + 高通QCA6174无线网卡连接不上WIFI问题解决
  7. AcrelCloud-1000变电所运维云平台在浙江固特成套设备有限公司的应用
  8. Yarn01:诞生背景、架构和工作机制介绍
  9. java web 分页详解2
  10. baidu 百度搜索 命令