1.题目大意

比较给定序列和用户猜想的序列,统计有多少数字位置正确(x),有多少数字在两个序列中都出现过(y)但位置不对。

2.思路

这题自己思考的思路跟书上给的思路差不多。第一个小问题——位置正确的数字数量可以很容易求出,第二个小问题——在两个序列中都出现过但位置不对的数字数量则要由“y-x=在两个序列中都出现过的数字数量-位置正确的数字数量”得出。

3.应当注意的问题

(1)虽然思路大同小异,但是具体实现的过程中能否很好地实现则很考验人。最开始写这题的时候,我甚至定义了4个数组,这点在后来证明了是没有必要的。因此在实现的过程中,如何简化应该是值得思考和练习的。

(2)对于结束的判断,“正常的猜测序列不会有0,所以只判断第一个数是否为0即可”,其实在判断结束的实现这里我卡了一下,说明对题目的理解还不够。

4.代码

#include"stdio.h"
#define maxn 1005 int main()
{
int n,i,d,x,y,num1,num2,times=0;
int a[maxn],b[maxn]; while(scanf("%d",&n)==1 && n)
{
printf("Game %d:\n",++times); //数据组数编号
for(i = 0; i < n; i++)
scanf("%d",&a[i]);
for(;;)
{
x = 0;
y = 0;
for(i = 0; i < n; i++)
{
scanf("%d",&b[i]);
if(a[i] == b[i]) x++; //统计有多少数字位置正确
}
if(b[0] == 0) break; for(d = 1; d < 10; d++)
{
num1=0;
num2=0;
for(i = 0; i<n; i++)
{
if(d == a[i]) num1++;
if(d == b[i]) num2++;
}
if(num1 < num2) y += num1;
else y += num2;
}
printf(" (%d,%d)\n",x,y-x);
}
}
return 0;
}

  

  参考书目:算法竞赛入门经典(第2版) 刘汝佳 编著

UVa 340 - Master-Mind Hints 解题报告 - C语言的更多相关文章

  1. uva 10881 Piotr's Ants 解题报告

    题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=20&pa ...

  2. UVA 12538 Version Controlled IDE 解题报告

    题意:给三种操作 1.在p位置插入一个字符串. 2.从p位置开始删除长度为c的字符串 3.输出第v个历史版本中从p位置开始的长度为c的字符串 解法:可以用平衡树做,但是不会.后来又听说可一用一个叫ro ...

  3. uva 10618 Tango Tango Insurrection 解题报告

    Tango Tango Insurrection Time Limit: 3000MS     64bit IO Format: %lld & %llu Submit Status uDebu ...

  4. UVa 455 - Periodic Strings - ( C++ ) - 解题报告

    1.题目大意 求一个长度不超过80的字符串的最小周期. 2.思路 非常简单,基本就是根据周期的定义做出来的,几乎不需要过脑. 3.应该注意的地方 (1) 最后输出的方式要注意,不然很容易就PE了.不过 ...

  5. UVa 1225 - Digit Counting - ACM/ICPC Danang 2007 解题报告 - C语言

    1.题目大意 把前n$(n\le 10000)$个整数顺次写在一起:12345678910111213……计算0~9各出现了多少次. 2.思路 第一想法是打表,然而觉得稍微有点暴力.不过暂时没有想到更 ...

  6. UVa 1585 - Score - ACM/ICPC Seoul 2005 解题报告 - C语言

    1.题目大意 给出一个由O和X组成的字符串(长度为80以内),每个O的得分为目前连续出现的O的数量,X得分为0,统计得分. 2.思路 实在说不出了,这题没过脑AC的.直接贴代码吧.=_= 3.代码 # ...

  7. UVa -1584 Circular Sequence 解题报告 - C语言

    1.题目大意 输入长度为n$(2\le n\le 100)$的环状DNA串,找出该DNA串字典序最小的最小表示. 2.思路 这题特别简单,一一对比不同位置开始的字符串的字典序,更新result. 3. ...

  8. UVa 1583 - Digit Generator 解题报告 - C语言

    1.题目大意 如果a加上a的各个数字之和得到b,则说a是b的生成元.给出n其中$1\le n\le 100000$,求其最小生成元,若没有解则输出0. 2.思路 使用打表的方法打出各个数字a对应的b, ...

  9. UVa 401 - Palindromes 解题报告 - C语言

    1.题目大意 输入字符串,判断其是否为回文串或镜像串.其中,输入的字符串中不含0,且全为合法字符.以下为所有的合法字符及其镜像: 2.思路 (1)考虑使用常量数组而不是if或switch来实现对镜像的 ...

随机推荐

  1. ObjC之RunTime(上)

    转载自这里. 最近看了一本书——iOS6 programming Pushing the Limits(亚马逊有中文版),最后一章是关于Deep ObjC的,主要内容是ObjC的runtime.虽然之 ...

  2. centos7安装ftp

    1.服务器初始化检查 检查selinux,firewall,iptables是否开启 1.查看selinux的运行状态 [root@zeq ~] getenforce Disabled 我的现在是关闭 ...

  3. 慎使用sql的enum字段类型

    在sql的优化中,会有同学提到一点:使用enum字段类型,代替其他tinyint等类型.以前这也是不少人喜欢优化的,但是现在细想,是非常不合理的. 优点: 1.可以设置区间范围,比如设置性别:1男2女 ...

  4. DataSet转换为泛型集合和DataRow 转成 模型类

    public static class TransformToList { /// <summary> /// DataSet转换为泛型集合 /// </summary> // ...

  5. swoole学习(二)----搭建server和client

    1.搭建server 1.1搭建server.php 1.搭建websocket服务器,首先建立 server.php 文件, <?php $server = new swoole_websoc ...

  6. Laravel 生成二维码

    (本实例laravel 版本 >=5.6, PHP版本 >=7.0) 1.首先,添加 QrCode 包添加到你的 composer.json 文件的 require 里: "re ...

  7. js分片上传大文件,前端代码

    首先导入jQuery.form.js文件,下面src是相对于改js文件位置, <script type="text/JavaScript" src="jquery/ ...

  8. C语言中字符串赋值的几个理解

    在C语言中,字符串的赋值主要有两种方法,第一种是通过指针的方式直接赋值,第二种是通过数组直接赋值. 一.首先,我们来看第一种赋值方法:指针式赋值 我们知道,上面的示例是显然可以正常执行的,也是很容易理 ...

  9. JavaWeb——课程管理系统(2).java---18.11.29

    DaoFactory.java package com.jaovo.msg.Util; import com.jaovo.msg.dao.UserDaoImpl; public class DaoFa ...

  10. JavaScript’s “this”: how it works, where it can trip you up

    JavaScript’s “this”: how it works, where it can trip you up http://speakingjs.com/es5/ch23.html#_ind ...