算法习题---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版本 上次做完第一个版本后,发现还有一些漏洞,并且还有一些可以添 ...
随机推荐
- WPF 反编译后错误处理
1. 首先,手动创建一个WPF工程(WpfApplicationReflectorDemo) 2. 把生成的WpfApplicationReflectorDemo.exe 拖到ILSpy里 3.点击 ...
- EntityFramework 两个参数连续(中间有空格)问题
昨天在项目中,用到 EntityFramework 通过SQL语句查询. 具体的SQL语句如下: SELECT t.* FROM ( SELECT c.id AS CommunityId, c.`na ...
- selenium.webdriver获取结果转为json格式
from selenium import webdriver driver.get(requestUrl)html = driver.page_sourcesoup = BeautifulSoup(h ...
- 【轉】mantis安裝
一.mantis简介 可以看出,mantis是一个基于php技术的,个人觉得这个系统还是很完善的. 安装mantis,需要安装一下软件: phpMyAdmin 下载地址https://w ...
- require sqlite3时报The specified module could not be found.错误
http://dependencywalker.com/ 在这个站点下载对应平台的Dependency Walker,打开你自己编译好的.node文件(sqlite3\lib\binding\node ...
- [ARIA] Accessible animations with reduced motion
Animations can make people sick, or worse! By adding animation toggles and listening in to the user' ...
- 6、transformation和action1
一.transformation和action入门 1.介绍 Spark支持两种RDD操作:transformation和action.transformation操作会针对已有的RDD创建一个新的R ...
- Angular2日期格式化
一:组件日期格式化: ts中调用: import {DatePipe} from "@angular/common"; @Component({ providers: [D ...
- dashucoding记录2019.6.7
购买阿里云ECS主机 购买域名 申请备案 环境配置 安装wordpress 域名解析 在"产品与服务"中选择云服务器ECS 购买完域名之后建议去实名认证 域名购买链接:http:/ ...
- ros平台下python脚本控制机械臂运动
在使用moveit_setup_assistant生成机械臂的配置文件后可以使用roslaunch demo.launch启动demo,在rviz中可以通过拖动机械臂进行运动学正逆解/轨迹规划等仿真运 ...