uva340 数字匹配检索问题
这道题目大意是:给定一个secret code,然后输入guess code,让你编程给出提示,提示的格式是(i,j),其中i表示strong match的个数,j表示weak match的个数。所谓strong&weak match就有一点像猜数字游戏了,strong match表示数字正确且位置也正确;weak match表示数字正确但位置不正确。要求每输入一个guess code就要输出相应的hint。
我的思路是先循环一次将所有strong match找出,再建立一个存下表的数组,将不是strong match的下标加入该数组中,方便之后寻找weak match。因为题目要求hint必须满足总匹配数和strong 匹配数都达到最大,所以有strong match 的情况就不要将它归到weak match里边了。之后找weak match就简单了,将secret code数组未匹配的位置遍历一遍,统计出1-9这九个数字各出现几次,再统计guess code数组,然后每一个数字取出现次数少的即为该数字的weak match的次数(e.g.1在secret code出现了2次,在guess code出现了一次,则weak 匹配数必然=1,同理将2,3……9都求出来相加即为结果)
代码如下
#include<iostream>
using namespace std;
int main()
{
int n;
int col=0;
while(cin>>n&&n!=0)
{
col++;
int* scode=new int[n];
for (int i=0;i<n;i++) cin>>scode[i];
cout<<"Game "<<col<<":"<<endl;
while (1)
{
int strong,weak;
strong=weak=0;
int* gcode=new int[n];
for (int i=0;i<n;i++) cin>>gcode[i];
if (gcode[0]==0)
{
delete gcode;
break;
}
int* unmatch=new int[n];
int index_unmatch=0;
for (int i=0;i<n;i++)
{
if (scode[i]==gcode[i]) strong++;
else
{
unmatch[index_unmatch++]=i;
}
}
if (index_unmatch>0)
{
int scount[10]={0};
int gcount[10]={0};
for (int i=0;i<index_unmatch;i++)
{
scount[scode[unmatch[i]]]++; //scount[1]存放的即1在scode中出现次数
gcount[gcode[unmatch[i]]]++;
}
for (int i=1;i<10;i++)
{
weak=weak+(scount[i]<gcount[i]?scount[i]:gcount[i]); //取小的数
}
} cout<<" ("<<strong<<","<<weak<<")"<<endl;
delete unmatch;
delete gcode;
}
delete scode;
}
}
uva340 数字匹配检索问题的更多相关文章
- poj 1486 纸张与数字匹配(二分图+割边处理)
题目来源:http://poj.org/problem?id=1486 题意: 算出所有独一无二的字母与数字的组合,使二分图完全匹配 我以为所有点都要独一无二匹配时输出匹配方法 题解: 先得到一个完全 ...
- Perl学习笔记(2)----正则表达式数字匹配的一个疏忽
<Perl语言入门>第15章习题第2题如下: 用 given-when 结构写一个程序,根据输入的数字,如果它能被3整除,就打印“Fizz”:如果它能被5整除,就打印“Bin”:如果它能被 ...
- Elasticsearch高级检索之使用单个字母数字进行分词N-gram tokenizer(不区分大小写)【实战篇】
一.前言 小编最近在做到一个检索相关的需求,要求按照一个字段的每个字母或者数字进行检索,如果是不设置分词规则的话,英文是按照单词来进行分词的. 小编以7.6.0版本做的功能哈,大家可以根据自己的版本去 ...
- java正则表达式应用--验证字符串是否为数字(转载)
首先说一下java正则表达式的重点概念: 第一.相关类:Pattern.Matcher 第二.典型的调用顺序是 Pattern p = Pattern.compile("a*b") ...
- PHP 正则表达式匹配 preg_match 与 preg_match_all 函数
--http://www.5idev.com/p-php_preg_match.shtml 正则表达式在 PHP 中的应用 在 PHP 应用中,正则表达式主要用于: 正则匹配:根据正则表达式匹配相应的 ...
- python3.4学习笔记(十二) python正则表达式的使用,使用pyspider匹配输出带.html结尾的URL
python3.4学习笔记(十二) python正则表达式的使用,使用pyspider匹配输出带.html结尾的URL实战例子:使用pyspider匹配输出带.html结尾的URL:@config(a ...
- 1.检索数据 ---SQL
相关提示: 结束SQL语句 多条SQL语句必须以分号(:)分隔.多数DBMS不需要在单条SQL语句后加分号,但也有DBMS可能必须在单条SQL语句后加上分号.当然,如果愿意可以总是加上分号.事实上,即 ...
- ES 21 - Elasticsearch的高级检索语法 (包括term、prefix、wildcard、fuzzy、boost等)
目录 1 term query - 索引词检索 1.1 term query - 不分词检索 1.2 terms query - in检索 2 prefix query - 前缀检索 3 wildca ...
- Shell文本处理 - 匹配与编辑
正则表达式 符号 含义 . 匹配任意ASCII中任意单个字符,或是字母,或是数字 ^ 匹配行首 $ 匹配行尾 * 匹配任意字符或前一个的一次或多次重复 \ 转义,被转义的有$ . ‘ “ * [ ] ...
随机推荐
- springboot 配置多数据源
1.首先在创建应用对象时引入autoConfig package com; import org.springframework.boot.SpringApplication; import org. ...
- jquery checkbox获取多个选项
http://www.jb51.net/article/27186.htm http://www.cnblogs.com/libingql/archive/2011/11/07/2238663.htm ...
- lib 合并
方法1: 命令如下:lib.exe lib1.lib lib2.lib ... /out:hw.lib 另一种合并的方法: 思路:lib.exe 可以把lib文件里的obj文件取出来,然后把这些obj ...
- 指令 scope
angular学习笔记(三十)-指令(8)-scope <!DOCTYPE html> <html ng-app="myApp"> <head> ...
- ☀【JS】eval
避免使用 eval <!doctype html> <html lang="zh-CN"> <head> <meta charset=&q ...
- 谈谈分布式事务之一:SOA需要怎样的事务控制方式
在一个基于SOA架构的分布式系统体系中,服务(Service)成为了基本的功能提供单元,无论与业务流程无关的基础功能,还是具体的业务逻辑, 均实现在相应的服务之中.服务对外提供统一的接口,服务之间采用 ...
- [转]NHibernate之旅(13):初探立即加载机制
本节内容 引入 立即加载 实例分析 1.一对多关系实例 2.多对多关系实例 结语 引入 通过上一篇的介绍,我们知道了NHibernate中默认的加载机制——延迟加载.其本质就是使用GoF23中代理模式 ...
- [Stephen]关于Ext.net fileupload 的兼容性解决问题
在firefox下,利用fileupload上传图片后,通过后端将image 的src路径进行更新,刷新前段界面显示没有问题. 但是在以IE为内核的360中,这种上传后的更新导致一个命名为Action ...
- Loadrunner 录制成功,但是脚本并没有产生
LR 在用IE 录制脚本已经成功,但是结束录制以后,并没有脚本产生,在产生脚本log 中提示: [Net An. Error (14c8:1cec)] Request Connection: R ...
- Class.forName()数据库驱动
在学习jdbc中,用到Class.forName(驱动);,当时学习的时候知道Class.forName就是加载一个类到虚拟机,在加载一个类的时候,这个类的信息会被放到一个方法区,一个CLass 在J ...