2692 假币问题(枚举——数学模型中包含多个变量)

描述
赛利有12枚银币。其中有11枚真币和1枚假币。假币看起来和真币没有区别,但是重量不同。但赛利不知道假币比真币轻还是重。于是他向朋友借了一架天平。朋友希望赛利称三次就能找出假币并且确定假币是轻是重。例如:如果赛利用天平称两枚硬币,发现天平平衡,说明两枚都是真的。如果赛利用一枚真币与另一枚银币比较,发现它比真币轻或重,说明它是假币。经过精心安排每次的称量,赛利保证在称三次后确定假币。
输入
第一行有一个数字n,表示有n组测试用例。
对于每组测试用例:
输入有三行,每行表示一次称量的结果。赛利事先将银币标号为A-L。每次称量的结果用三个以空格隔开的字符串表示:天平左边放置的硬币
天平右边放置的硬币 平衡状态。其中平衡状态用``up‘‘, ``down‘‘, 或 ``even‘‘表示,
分别为右端高、右端低和平衡。天平左右的硬币数总是相等的。
输出
输出哪一个标号的银币是假币,并说明它比真币轻还是重(heavy or light)。
样例输入
1
ABCD EFGH even
ABCI EFJK up
ABIJ EFGH even 
样例输出
K is the counterfeit coin and it is light.
 1 /*
 2 数学模型中包含多个变量的例子
 3 问题 给出三组称量方式及其结果,判断出十二个金币中哪个是假币,并且说明是比真币重还是比真币轻
 4 解题思路 :首先想到的是共12个金币,且每个金币有两种情况,所以采用枚举法,变量分别是每个金币的编号x和轻重2
 5 在所有可能的24种猜测中,枚举每个金币及其轻重,当满足所有条件时为假设成立*/
 6 #include<stdio.h>
 7 #include<string.h>
 8 int judge(int x,int w);
 9 char left[3][10],right[3][10],result[3][10];
10 int main()
11 {
12     int t;
13     scanf("%d",&t);
14     int i;
15     while(t--)
16     {
17         for(i=0;i<=2;i++)
18             scanf("%s%s%s",left[i],right[i],result[i]);
19         int x,w;
20         for(x=0;x<=11;x++)
21         {
22             if(judge(x,0))
23             {
24                 printf("%c is the counterfeit coin and it is light.\n",x+‘A‘);
25                 break;
26             }
27             if(judge(x,1))
28             {
29                 printf("%c is the counterfeit coin and it is heavy.\n",x+‘A‘);
30                 break;
31             }
32         }
33     }
34     return 0;
35 }
36 int judge(int x,int w)
37 {
38     int i;
39     for(i=0;i<=2;i++)
40     {
41         if(!strcmp(result[i],"even"))//strcmp函数的使用,相同时返回0,前者的字典序大于后者时返回1,反之返回0
42         {
43             if(strchr(left[i],x+‘A‘) != NULL || strchr(right[i],x+‘A‘) != NULL)
44                 return 0;
45         }
46         if(!strcmp(result[i],"up"))
47         {
48             if(w==0 && strchr(left[i],x+‘A‘) != NULL)
49                 return 0;
50             if(w==1 && strchr(right[i],x+‘A‘) != NULL)
51                 return 0;
52         }
53         if(!strcmp(result[i],"down"))
54         {
55             if(w==0 && strchr(right[i],x+‘A‘) != NULL)
56                 return 0;
57             if(w==1 && strchr(left[i],x+‘A‘) != NULL)
58                 return 0;
59         }
60     }
61     return 1;
62 }
63 /*错误分析
64 注意strcmp函数的使用
65 strchr的使用,找到返回第一次出现时的指针,找不到返回BULL*/

原文地址:https://www.cnblogs.com/wenzhixin/p/8428673.html

时间: 2024-10-11 12:11:11

2692 假币问题(枚举——数学模型中包含多个变量)的相关文章

接口中包含抽象类demo

package jiechoudemo; /* * 接口中包含抽象类 */ public class jiechoudemo { public static void main(String[] args) { windows.door wd = new zhuozi().new yizi(); wd.close(); } } //写一个接口 interface windows{ public abstract void open(); //抽象类 abstract class door{ pu

笔记01 登录、常用配置参数、Action访问Servlet API 和设置Action中对象的值、命名空间和乱码处理、Action中包含多个方法如何调用

Struts2登录 1. 需要注意:Struts2需要运行在JRE1.5及以上版本 2. 在web.xml配置文件中,配置StrutsPrepareAndExecuteFilter或FilterDispatcher 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <filter>     <filter-name>struts2</filter-name>     <filter-class>org.apache.struts2.di

在 PHP 网页中包含文件 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;

如果多个文件中有重复的代码,则可以将这部分代码写到一个文件中去,然后在需要的地方把这个文件包含进来即可.注意在这个文件中,只需要这些重复的代码,而不需要其它的格式或者什么的,文件名可以随便起,后缀可要可不要. 通过使用包含文件,您可以在自己的网站中的多个网页上轻松包含相同的内容.所谓包含文件是指当网页在浏览器中呈现时动态地包含在网页中的文件. 包含文件可以简化站点的管理工作.例如,您可以创建网站中多个网页上所要包含的网页横幅.网站信息块或菜单之类的内容.这样,当需要更改这些内容时,只需在单个文件

如何去除AJAX收到数据中包含的html页面数据

问题: 如下代码所示,我用AJAX收到来自url: 'kzkj_check.jsp',返回的数据msg,总是包含页面的html数据,可是我只想要我返回的数据“false”, $.ajax({ url: 'kzkj_check.jsp', async:false, data: 'un='+ $('#userName').val() +'&pw=' + $('#passWord').val(), type: "get", success: function(msg){ if(msg

搜索文件或目录中包含字符串的文件 java小程序

package com.ruishenh.spring.test; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.Enumeration; import java.

在Java中判断数组中包含某个元素的几种方式的比较

闲来无事,将java中判断数组中包含某个元素的几种方式的速度进行对比,直接上代码 talk is cheap, show you the code package test.contain.lishaojie; import java.util.Arrays;import java.util.HashSet;import java.util.Set; public class TestContain { /** * @param args */ public static void main(S

iOS边练边学--NSURLSession、NSURLSessionTask的介绍与使用以及url中包含了中文的处理方法

一.NSURLSession.NSURLSessionTask的使用步骤 首先创建NSURLSession对象 通过NSURLSession对象创建对应的任务 <1>NSURLSessionDataTask的GET和POST  -- 以及url中包含了中文的解决办法 <2>NSURLSessionDownloadTask实现小文件的下载 <3>NSURLSessionDownloadTask实现大文件的断点下载 -- 暂时没有实现退出程序后的文件续传 1 #import

找出此产品描述中包含N个关键字的长度最短的子串

阿里巴巴笔试题:给定一段产品的英文描述,包含M个英文字母,每个英文单词以空格分隔,无其他标点符号:再给定N个英文关键词,请说明思路并变成实现方法. String extractSummary(String description , String[] keyWords) 目标:找出此产品描述中包含N个关键字的长度最短的子串(20分) W0 W1 W2 W3  Q0 W4 W5 Q1 W6 W7 W8 Q0 W9 Q1 P335 <编程之美>上的参考代码: int nTarget = N + 1

NSString 中包含中文字符时转换为NSURL

由于url支持26个英文字母.数字和少数几个特殊字符,因此,对于url中包含非标准url的字符时,就需要对其进行编码.iOS中提供了函数stringByAddingPercentEscapesUsingEncoding对中文和一些特殊字符进行编码,但是stringByAddingPercentEscapesUsingEncoding的功能并不完善,对一些较为特殊的字符无效.而对这些字符则可以使用CFURLCreateStringByteAddingPercentEscapes函数, 1 NSSt