uva340 Master-Mind Hints (UVA - 340)
题目简要
题目意思很简单每个测试都由原题目在第一行,然后后面的都是去猜的答案,如果猜测的位置正确那么输出的结果的数对里面的第一个数就加一,如果仅答案正确(原题目里有这个数,但是位置不一样)那么就在输出数对的第二个数加一。
并且需要注意已经判断过的数是不能再判断第二次的。
例如以下的样例
1 3 5 5
1 1 2 3
4 3 3 5
1 3 5 5是原来的题目,对于1 1 2 3来说只有第一个1是位置正确并且答案也对的,那么经过计算后原题目的1和现在猜测的1都去掉然后变成了 3 5 5 和1 2 3然后发现还有一个最后的3是答案正确但是位置不对,所以第一个输出的数对是(1,1)以此类推第二个是猜测的第二个数3和第四个数5满足第一个条件所以输出的答案是(2,0)
如何实现
首先第一个条件很好判断啊,直接把原来的题目和输出的答案进行对照就行了。
第二个条件可能难一点,我的想法也是直接判断,写两个for然后外面for是代表原题目的每个数,里面的for是答案的每个数一一对应如果有一样的,那么第二个条件加一
对于去除数据来说我的想法是直接开两个bk就行了,bk是1的时候说明这个数已经用过了,每次先判断一下bk就行了。
然后就是注意先判断第一个条件 还有的就是注意输出格式。
我的代码
#include <iostream>
#include <cstring>
//#include "fp.h"
using namespace std;
int num[1100];
int num2[1100];
int bk1[1100];
int bk2[1100];
struct node
{
int x,y;
}p[1100];
main()
{
//fop();
int n;
int nnum=0;
while(cin>>n&&n)
{
for(int i=0;i<n;i++)
scanf("%d",&num[i]);
int jk=0;
while(1)
{
int ans1,ans2;
ans1=ans2=0;
memset(bk1,0,sizeof(bk1));
memset(bk2,0,sizeof(bk2));
for(int j=0;j<n;j++)
scanf("%d",&num2[j]);
if(num2[0]==0)
break;
for(int j=0;j<n;j++)
if(num[j]==num2[j])
{
ans1++;bk1[j]=bk2[j]=1;
}
for(int j=0;j<n;j++)
for(int k=0;k<n;k++)
if(!bk1[j]&&!bk2[k])
{
if(num[j]==num2[k])
{
ans2++;bk1[j]=bk2[k]=1;
}
}
//cout<<ans1<<" "<<ans2<<endl;
p[jk].x=ans1;p[jk].y=ans2;
//cout<<p[jk].x<<" "<<p[jk].y<<endl;
jk++;
}
printf("Game %d:\n",++nnum);
for(int j=0;j<jk;j++)
printf(" (%d,%d)\n",p[j].x,p[j].y);
}
}
uva340 Master-Mind Hints (UVA - 340)的更多相关文章
- 猜数字游戏的提示(Master-Mind Hints, UVa 340)
实现一个经典"猜数字"游戏. 给定答案序列和用户猜的序列,统计有多少数字位置正确 (A),有多少数字在两个序列都出现过但位置不对(B). 输入包含多组数据.每组输入第一行为序列长度 ...
- UVa 340 Master-Mind Hints (优化查找&复制数组)
340 - Master-Mind Hints Time limit: 3.000 seconds http://uva.onlinejudge.org/index.php?option=com_on ...
- UVa 340 Master-Mind Hints
蛋疼的题目描述,看了好长好长时间才看懂,题目本身是很简单的. Designer给出一串长度为N的Code,Breaker用Guess来破译. 对于两串数字,如果有同一列相等的数字,那么叫做strong ...
- UVa 340 Master-Mind Hints(猜数字游戏的提示)
题意 猜数字游戏 统计猜的数字有多少个数字位置正确 有多少个数字在答案中出现可是位置不对 每一个字符仅仅能匹配一次 直接匹配每位数 #include<cstdio> #includ ...
- UVa 340 - Master-Mind Hints 解题报告 - C语言
1.题目大意 比较给定序列和用户猜想的序列,统计有多少数字位置正确(x),有多少数字在两个序列中都出现过(y)但位置不对. 2.思路 这题自己思考的思路跟书上给的思路差不多.第一个小问题——位置正确的 ...
- UVA 340 Master-Mind Hints 猜密码游戏(水)
题意: 给一串密码(第一行),接着再给你很多行猜测,针对每行猜测,输出两个数字,分表代表:同一列上匹配的个数,不同列上匹配的个数.注:匹配指的是一次,一旦配对,不能再与其他配对. 思路: 每接受一行猜 ...
- 【例题3-4 UVA - 340】Master-Mind Hints
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 这里出现了没有在相同位置的只能唯一配对. 就是说 3322 2234 这种情况. 只有3个weak pair. 即key[1]=a[ ...
- 【每日一题】 UVA - 340 阅读理解+模拟
https://cn.vjudge.net/problem/UVA-340 题目很难读,差不多读了两天 意思是给你一个n个数的数列,然后有m个询问,每个询问也是一个n个数的数列,让你输出两个数:一个是 ...
- 刘汝佳 算法竞赛-入门经典 第二部分 算法篇 第五章 3(Sorting/Searching)
第一题:340 - Master-Mind Hints UVA:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Item ...
随机推荐
- Android开发之使用sqlite3工具操作数据库的两种方式
使用 sqlite3 工具操作数据库的两种方式 请尊重他人的劳动成果,转载请注明出处:Android开发之使用sqlite3工具操作数据库的两种方式 http://blog.csdn.net/feng ...
- LeetCode 970. Powerful Integers (强整数)
题目标签:HashMap 题目让我们找出所有独一的powerful integers 小于bound的情况下. 把 x^i 看作 a:把 y^j 看作b, 代入for loop,把所有的情况都遍历一遍 ...
- 1732 Fibonacci数列 2
1732 Fibonacci数列 2 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 题目描述 Description 在“1250 F ...
- Redis主节点内存占用过高
0. 基本情况 Redis采用集群模式,560个主节点,主从比为1:1,单台机器上为16个节点.info memory观察到主节点A单个Redis内存used_memory_rss_human为9.2 ...
- ROADS - Roads
N cities named with numbers 1 ... N are connected with one-way roads. Each road has two parameters a ...
- go语言笔记——append是内置的函数!!!new是一个函数!!!调试可以使用闭包,本质上是print调试,尼玛!
内置函数 Go 语言拥有一些不需要进行导入操作就可以使用的内置函数.它们有时可以针对不同的类型进行操作,例如:len.cap 和 append,或必须用于系统级的操作,例如:panic.因此,它们需要 ...
- P3092 [USACO13NOV]没有找零No Change 状压dp
这个题有点意思,其实不是特别难,但是不太好想...中间用二分找最大的可买长度就行了. 题干: 题目描述 Farmer John <= K <= ), each with value .., ...
- 图练习-BFS-从起点到目标点的最短步数
http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2830 简单bfs #include <s ...
- Akka源码分析-官方文档说明
如果有小伙伴在看官方文档的时候,发现有些自相矛盾的地方,不要怀疑,可能是官方文档写错了或写的不清楚,毕竟它只能是把大部分情况描述清楚.开源代码一直在更新,官方文档有没有更新就不知道了,特别是那些官方不 ...
- C# 的反射和映射
最近想研究一下反射,先上网找了找资料,几乎大部分都是照抄MSDN的内容,生涩难懂,几乎没说,又找了找,发现一些强人的实例解析,才稍微有了 点门道,个人感觉,反射其实就是为了能够在程序运行期间动态的加载 ...