算法习题---3.01猜数字游戏提示(UVa340)
一.题目
实现一个经典“猜数字”游戏。给定答案序列和用户猜的序列,统计有多少数字位置正确(A),有多少数字在两个序列都出现过但位置不对(B)。
输入包含多组数据。每组输入第一行为序列长度n,第二行是答案序列,接下来是若干猜测序列,猜测序列全0时该组数据结束。n=0时输入结束。
二:样例输入:
4 //列数
1 3 5 5 //答案序列
1 1 2 3 //猜测序列--下面都是--直到结束序列
4 3 3 5
6 5 5 1
6 1 3 5
1 3 5 5
0 0 0 0 //结束序列
10 //列数
1 2 2 2 4 5 6 6 6 9 //答案序列
1 2 3 4 5 6 7 8 9 1 //猜测序列
1 1 2 2 3 3 4 4 5 5
1 2 1 3 1 5 1 6 1 9
1 2 2 5 5 5 6 6 6 7
0 0 0 0 0 0 0 0 0 0 //结束序列
//结束符
三:样例输出
Game :
(,)
(,)
(,)
(,)
(,)
Game :
(,)
(,)
(,)
(,)
实际效果:
Game :
输入答案序列
输入猜测序列
输出样例结果---(,)
输入猜测序列
输出样例结果---(,)
输入猜测序列
输出样例结果---(,)
输入猜测序列
输出样例结果---(,)
输入猜测序列
输出样例结果---(,)

四:重点分析--有多少数字在两个序列都出现过但位置不对(B)
实际就是将答案序列和猜测序列中满足数字位置正确的地方去除。
然后对剩余的进行比较数字是否在两个序列中存在且位置不对(一定不对,对的已经删除了)
例: --------将相同的位置去除,即第三列 数目为1 -------查看满足数字同时处于两个序列的数字
5都在,且位置不对,所以数目为2
例: ---------------------将相同位置去除,即第1,2列---数目为2 ---------------------查看满足数字同时处于两个序列的数字
9都在且位置不对---所以数目为4
1.额外声明数组记录下正确序列C和猜测序列D


2.统计数据正确的个数的同时---将对应CD数组对应位置减一

3.将CD数组进行比较,只有C[i]和D[i]同时存在,才认为这个数字在两个序列存在单位置不对

五:代码实现
#define MAX_N 1010 void test22()
{
//猜数字游戏
int n; //列数
int A[MAX_N], B[MAX_N]; //记录序列
int C[10],D[10],T[10]; //用于去重
int Count = ; //记录游戏次数
int jd; //判断是否结束
int Count_A, Count_B; //记录正确和出现的数据 while ()
{
//输出游戏
printf("Game %d:\n", ++Count); //1.进行输入,存储信息
scanf("%d", &n);
if (n == )
break; memset(C, 0, sizeof(C)); //输入正确序列到A
for (int i = 0; i < n; i++)
{
scanf("%d", &A[i]);
C[A[i]]++;
} //输入猜测序列B
while ()
{
memset(D, 0, sizeof(D));
memcpy(T, C, sizeof(C));
jd = ;
for (int i = ; i < n; i++)
{
scanf("%d", &B[i]);
if (B[i] != )
jd = ;
D[B[i]]++;
}
if (jd == )
break; //2.进行判断
Count_A = Count_B = ;
for (int i = ; i < n; i++)
if (A[i] == B[i])
{
Count_A++;
T[A[i]]--;
D[B[i]]--;
} for (int i = ; i <= ; i++)
if (T[i]&&D[i])
Count_B++; //3.进行输出信息
printf(" (%d,%d)\n", Count_A, Count_B);
} }
}

算法习题---3.01猜数字游戏提示(UVa340)的更多相关文章
- [C++]猜数字游戏的提示(Master-Mind Hints,UVa340)
[本博文非博主原创,思路与题目均摘自 刘汝佳<算法竞赛与入门经典(第2版)>] Question 例题3-4 猜数字游戏的提示(Master-Mind Hints,UVa340) 实现一个 ...
- UVa 340 Master-Mind Hints(猜数字游戏的提示)
题意 猜数字游戏 统计猜的数字有多少个数字位置正确 有多少个数字在答案中出现可是位置不对 每一个字符仅仅能匹配一次 直接匹配每位数 #include<cstdio> #includ ...
- 猜数字游戏的提示(Master-Mind Hints, UVa 340)
实现一个经典"猜数字"游戏. 给定答案序列和用户猜的序列,统计有多少数字位置正确 (A),有多少数字在两个序列都出现过但位置不对(B). 输入包含多组数据.每组输入第一行为序列长度 ...
- 例题3_4 猜数字游戏的提示(UVa340)
实现一个经典“猜数字”游戏.给定答案序列和用户猜的序列,统计有多少数字位置正确(A),有多少数字在两个序列都出现过但位置不对(B). 输入包含多组数据.每组输入第一行为序列长度n,第二行是答案序列,接 ...
- C语言猜数字游戏
猜数字游戏,各式各样的实现方式,我这边提供一个实现方式,希望可以帮到新手. 老程序猿就不要看了,黑呵呵 源代码1 include stdio.h include stdlib.h include ti ...
- 不一样的猜数字游戏 — leetcode 375. Guess Number Higher or Lower II
好久没切 leetcode 的题了,静下心来切了道,这道题比较有意思,和大家分享下. 我把它叫做 "不一样的猜数字游戏",我们先来看看传统的猜数字游戏,Guess Number H ...
- java 猜数字游戏
作用:猜数字游戏.随机产生1个数字(1~10),大了.小了或者成功后给出提示. 语言:java 工具:eclipse 作者:潇洒鸿图 时间:2016.11.10 >>>>> ...
- 【原创Android游戏】--猜数字游戏Version 0.1
想当年高中时经常和小伙伴在纸上或者黑板上或者学习机上玩猜数字的游戏,在当年那个手机等娱乐设备在我们那还不是很普遍的时候是很好的一个消遣的游戏,去年的时候便写了一个Android版的猜数字游戏,只是当时 ...
- 【原创Android游戏】--猜数字游戏V1.1 --数据存储,Intent,SimpleAdapter的学习与应用
--------------------------------------------------------------- V0.1版本 上次做完第一个版本后,发现还有一些漏洞,并且还有一些可以添 ...
随机推荐
- NLP学习(4)----word2vec模型
一. 原理 哈弗曼树推导: https://www.cnblogs.com/peghoty/p/3857839.html 负采样推导: http://www.hankcs.com/nlp/word2v ...
- 【转】用 Consul 来做服务注册与服务发现
原文:https://segmentfault.com/a/1190000018731395?utm_source=tag-newest ------------------------------- ...
- What is URL Encoding and How does it work?
Introduction A URL (Uniform Resource Locator) is the address of a resource in the world wide web. UR ...
- Oracle数据库 — DDL:数据定义语言
1.数据定义语言:用于定义数据库的结构,比如创建.修改或删除数据库对象: 包括: CREATE TABLE:创建数据库表:创建表的命名规则: 2.以字母开头:在 1–30 个字符之间:只能包含 A–Z ...
- django2.0报错Cannot import name 'urlresolvers'
刚刚从django1.1迁移到django2.0中出现一个意外的报错: google 了下,在stack.overflow上解释是说django2.0 把原来的 django.core.urlreso ...
- 如果解释Python,什么是.pyc文件?
我已经了解Python是一种解释型语言......但是,当我查看我的Python源代码时,我看到.pyc文件,Windows将其识别为“编译的Python文件”. 这些来自哪里? #1楼 Python ...
- 60、springmvc-异步请求-返回Callable
60.springmvc-异步请求-返回Callable @Controller public class AsyncController { @RequestMapping("async0 ...
- 51NOD 1452 - 加括号
DP预处理每个区间的值,再枚举括号位置就好了 #include <bits/stdc++.h> using namespace std; typedef long long ll; con ...
- js的使用及语法
通常,通过 JavaScript,您需要操作 HTML 元素. 1.通过 id 找到 HTML 元素 2.通过标签名找到 HTML 元素 3.通过类名找到 HTML 元素 提示:通过类名查找 HTML ...
- Linux操作系统常用命令合集——第一篇-文件和目录操作(40个命令)
一.选项和参数的区别 在经过上一次的系统安装后我们已经成功登陆,登陆LInux后,我们就可以在#或$符后面去输入命令,有的时候命令后面还会跟着“选项”(英文名:options)或“参数” ...