题意:

  给一串密码(第一行),接着再给你很多行猜测,针对每行猜测,输出两个数字,分表代表:同一列上匹配的个数,不同列上匹配的个数。注:匹配指的是一次,一旦配对,不能再与其他配对。

思路:

  每接受一行猜测就匹配,扫一遍就知道哪些是同列匹配的,统计出来,作为第一个输出的数字。扫的过程中将同列匹配的guess列置为零,顺便将不匹配的secret列插进哈希可重复的set中。接着再扫一遍guess数组,把非0的数字逐个在set中的找,找到了就删掉set中对应的数字,并统计个数。结果就出来了。

 #include <iostream>
#include <unordered_set>
#include <cstdio>
using namespace std;
const int N=;
int secret[N]; //密码
int guess[N];
int main()
{
freopen("input.txt", "r", stdin);
int n, j=;
int pair_1,pair_2;
unordered_multiset<int> mul_set;
while(cin>>n,n!=)
{
for(int i=; i<n; i++)
cin>>secret[i]; cout<<"Game "<<++j<<":"<<endl;
while()
{
for(int i=; i<n; i++) //输入
cin>>guess[i];
if(!guess[]&&!guess[]) break; //结束例子 pair_1=;
pair_2=;
for(int i=; i<n; i++) //扫一遍,处理相同的
{
if(secret[i]==guess[i])
{
pair_1++;
guess[i]=;
}
else
mul_set.insert(secret[i]);
} unordered_multiset<int>::iterator it;
for(int i=; i<n; i++) //再扫一遍
{
if(guess[i])
{
it=mul_set.find(guess[i]);
if(it!=mul_set.end()) //找到了
{
pair_2++;
mul_set.erase(it);
}
}
}
mul_set.clear();
printf(" (%d,%d)\n", pair_1,pair_2);
}
}
return ;
}

AC代码

UVA 340 Master-Mind Hints 猜密码游戏(水)的更多相关文章

  1. UVa 340 Master-Mind Hints(猜数字游戏的提示)

    题意  猜数字游戏  统计猜的数字有多少个数字位置正确  有多少个数字在答案中出现可是位置不对  每一个字符仅仅能匹配一次 直接匹配每位数 #include<cstdio> #includ ...

  2. 【例题3-4 UVA - 340】Master-Mind Hints

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 这里出现了没有在相同位置的只能唯一配对. 就是说 3322 2234 这种情况. 只有3个weak pair. 即key[1]=a[ ...

  3. 猜数字游戏的提示(Master-Mind Hints, UVa 340)

    实现一个经典"猜数字"游戏. 给定答案序列和用户猜的序列,统计有多少数字位置正确 (A),有多少数字在两个序列都出现过但位置不对(B). 输入包含多组数据.每组输入第一行为序列长度 ...

  4. [C++]猜数字游戏的提示(Master-Mind Hints,UVa340)

    [本博文非博主原创,思路与题目均摘自 刘汝佳<算法竞赛与入门经典(第2版)>] Question 例题3-4 猜数字游戏的提示(Master-Mind Hints,UVa340) 实现一个 ...

  5. 通过游戏学python 3.6 第一季 第九章 实例项目 猜数字游戏--核心代码--猜测次数--随机函数和屏蔽错误代码--优化代码及注释--简单账号密码登陆--账号的注册查询和密码的找回修改--锁定账号--锁定次数--菜单功能'menufile

      通过游戏学python 3.6 第一季 第九章 实例项目 猜数字游戏--核心代码--猜测次数--随机函数和屏蔽错误代码--优化代码及注释--简单账号密码登陆--账号的注册查询和密码的找回修改--锁 ...

  6. 通过游戏学python 3.6 第一季 第八章 实例项目 猜数字游戏--核心代码--猜测次数--随机函数和屏蔽错误代码--优化代码及注释--简单账号密码登陆--账号的注册查询和密码的找回修改--锁定账号--锁定次数

    通过游戏学python 3.6 第一季 第八章 实例项目 猜数字游戏--核心代码--猜测次数--随机函数和屏蔽错误代码--优化代码及注释--简单账号密码登陆--账号的注册查询和密码的找回修改--锁定账 ...

  7. JAVA课程设计 猜数游戏 团队

    团队名称,成员介绍 名称: 猜数游戏 成员: 网络1514 201521123086 周颖强 网络1514 201521123087蒋勃超 项目git地址 git.oschina.net/jbc113 ...

  8. 猜字游戏java

    一.实践目的 1.掌握基本输入输出. 2.掌握方法定义与调用,理解参数传递方式. 3.掌握数组的声明.定义与初始化,数组的处理. 4.掌握数组作为方法参数和返回值. 二.实践要求 利用方法.数组.基本 ...

  9. java实现登录的验证码和猜数字游戏_图形化界面

    实验任务四 1,出现设计思想 (1)先定义文本框.密码框和验证码框的组件 (2)定义面板和按钮的个数 (3)定义公有的虚构方法,通过对象实例化来调用 (4)利用Random类来实现生成0-9的随机数 ...

随机推荐

  1. 工作随记——弹出QQ联系方式

    <a target="_blank" href="http://wpa.qq.com/msgrd?v=1&uin=QQ号码&site=qq& ...

  2. c#入门学习-Action和Func的使用

    我的理解就是:Action和Func就是官方声明好的代理using System; namespace funcActionDemo{    class MainClass    {        p ...

  3. DATASET()用法

    DataSet是ADO.NET的中心概念.可以把DataSet当成内存中的数据库,DataSet是不依赖于数据库的独立数据集合.所谓独立,就是说,即使断开数据链路,或者关闭数据库,DataSet依然是 ...

  4. CentOS6.5添加rbd模块

    [root@ceph-monitor opt]# modprobe rbd   FATAL: Module rbd not found. Once you have deployed the almi ...

  5. 解决LINUX下SQLPLUS时上下左右键乱码问题

    window下的sqlplus可以通过箭头键,来回看历史命令,用起来非常的方便. 但是在linux里就没有这么方面了,错了一个命令,我们必须重新敲一次,辛苦了手指头叻. 看到一个文章,很方便的一招,给 ...

  6. ldap第二天-yum安装LDAP + phpLDAPadmin

    1.安装LDAP服务器和客户端,migrationtools工具包 yum install -y openldap-servers openldap-clients migrationtools 2. ...

  7. 洛谷P3582 [POI2015]KIN

    题目描述 共有\(m\)部电影,编号为\(1--m\),第\(i\)部电影的好看值为\(w[i]\).在\(n\)天之中(从\(1~n\)编号)每天会放映一部电影,第\(i\)天放映的是第\(f[i] ...

  8. thinkphp5缓存使用

    之前不明白缓存有什么用处,后来看了一些案例大概有点了解,记录一下.1.thinkphp5没有静态缓存2.对于一些更新不是太频繁的数据,我们可以使用缓存机制对查询到的数据进行缓存,减缓数据库压力3.下面 ...

  9. event对象的使用注意事项

    首先event是在事件发生的时候产生的,所以必须在事件发生的事件监听函数里面使用他.不然的话就没用的.会找不到这个事件: 错误的写法: 报错的内容: 正确的写法:

  10. PHPExcel探索之旅---阶段二 设置表格样式

    1.设置表格的默认样式为水平居中.垂直居中 getDefaultStyle()函数用来设置默认样式 由活动sheet对象来调用,setVertical()函数和setHorizontal()函数分别用 ...