北大poj- 1013
Counterfeit Dollar
| Time Limit: 1000MS | Memory Limit: 10000K | |
| Total Submissions: 50515 | Accepted: 15808 |
Description
Happily, Sally has a friend who loans her a very accurate balance
scale. The friend will permit Sally three weighings to find the
counterfeit coin. For instance, if Sally weighs two coins against each
other and the scales balance then she knows these two coins are true.
Now if Sally weighs
one of the true coins against a third coin and the scales do not
balance then Sally knows the third coin is counterfeit and she can tell
whether it is light or heavy depending on whether the balance on which
it is placed goes up or down, respectively.
By choosing her weighings carefully, Sally is able to ensure that
she will find the counterfeit coin with exactly three weighings.
Input
first line of input is an integer n (n > 0) specifying the number of
cases to follow. Each case consists of three lines of input, one for
each weighing. Sally has identified each of the coins with the letters
A--L. Information on a weighing will be given by two strings of letters
and then one of the words ``up'', ``down'', or ``even''. The first
string of letters will represent the coins on the left balance; the
second string, the coins on the right balance. (Sally will always place
the same number of coins on the right balance as on the left balance.)
The word in the third position will tell whether the right side of the
balance goes up, down, or remains even.
Output
each case, the output will identify the counterfeit coin by its letter
and tell whether it is heavy or light. The solution will always be
uniquely determined.
Sample Input
1
ABCD EFGH even
ABCI EFJK up
ABIJ EFGH even
Sample Output
K is the counterfeit coin and it is light.
Source
#include <stdio.h>
#include <string.h>
#include <stdlib.h> #define TRUE (int)1
#define FALSE (int)0 #define CASE_NUM 3
#define MAX_COIN_NUM 12 typedef int BOOL; typedef struct
{
int strLen;
char str1[MAX_COIN_NUM+];
char str2[MAX_COIN_NUM+];
char delta[];
}WeightCase; WeightCase g_case[CASE_NUM];
BOOL g_isEvenCoin[MAX_COIN_NUM];
char g_coin[MAX_COIN_NUM]; const char up[] = "up\0";
const char down[] = "down\0";
const char even[] = "even\0"; void Input()
{
int i = ;
for(i = ; i < CASE_NUM; i++)
{
scanf(" %s", g_case[i].str1);
scanf(" %s", g_case[i].str2);
scanf(" %s", g_case[i].delta);
g_case[i].strLen = strlen(g_case[i].str1);
}
} void ProcEvenCase()
{
int i, j; for(i = ; i < CASE_NUM; i++)
{
if( != strcmp(g_case[i].delta, even)) continue; for(j = ; j < g_case[i].strLen; j++)
{
g_isEvenCoin[g_case[i].str1[j] - 'A'] = TRUE;
g_isEvenCoin[g_case[i].str2[j] - 'A'] = TRUE;
}
}
} void ProcOtherCase()
{
int i, j, delta; for(i = ; i < CASE_NUM; i++)
{
if( == strcmp(g_case[i].delta, even)) continue; if( == strcmp(g_case[i].delta, up))
delta = ;
else
delta = -; for(j = ; j < g_case[i].strLen; j++)
{
if(!g_isEvenCoin[g_case[i].str1[j] - 'A']) g_coin[g_case[i].str1[j] - 'A'] += delta;
if(!g_isEvenCoin[g_case[i].str2[j] - 'A']) g_coin[g_case[i].str2[j] - 'A'] -= delta;
}
}
} void Proc()
{
memset(g_coin, , sizeof(g_coin));
memset(g_isEvenCoin, FALSE, sizeof(g_isEvenCoin)); ProcEvenCase();
ProcOtherCase();
} void Output()
{
int i, tmp, pos = , max = ;
char coin;
for(i = ; i < sizeof(g_coin); i++)
{
tmp = abs(g_coin[i]);
if(tmp > max)
{
max = tmp;
pos = i;
}
}
coin = pos+'A'; if(g_coin[pos] < )
printf("%c is the counterfeit coin and it is light.\n", coin);
else
printf("%c is the counterfeit coin and it is heavy.\n", coin);
} int main()
{
int num = ;
scanf("%d", &num);
while(num--)
{
Input();
Proc();
Output();
} return ;
}
北大poj- 1013的更多相关文章
- 北大POJ题库使用指南
原文地址:北大POJ题库使用指南 北大ACM题分类主流算法: 1.搜索 //回溯 2.DP(动态规划)//记忆化搜索 3.贪心 4.图论 //最短路径.最小生成树.网络流 5.数论 //组合数学(排列 ...
- Poj 1013 Counterfeit Dollar / OpenJudge 1013(2692) 假币问题
1.链接地址: http://poj.org/problem?id=1013 http://bailian.openjudge.cn/practice/2692 http://bailian.open ...
- 模拟,找次品硬币,Counterfeit Dollar(POJ 1013)
题目链接:http://poj.org/problem?id=1013 解题报告: 1.由于次品的重量不清楚,用time['L'+1]来记录各个字母被怀疑的次数.为负数则轻,为正数则重. 2.用zer ...
- POJ 1013 Counterfeit Dollar
Counterfeit Dollar Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 36206 Accepted: 11 ...
- POJ 1013 Counterfeit Dollar 集合上的位运算
Description Sally Jones has a dozen Voyageur silver dollars. However, only eleven of the coins are t ...
- POJ 1013 小水题 暴力模拟
Counterfeit Dollar Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 35774 Accepted: 11 ...
- poj 1013(uva 608) Counterfeit Dollar
#include <cstdio> #include <cstdlib> #include <cstring> #include <cmath> #in ...
- POJ 1013
#include"string.h"char left[3][7],right[3][7],result[3][5];bool isHeavy(char x ){ int i ...
- POJ 1013:Counterfeit Dollar
Counterfeit Dollar Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 42028 Accepted: 13 ...
- 思维+模拟--POJ 1013 Counterfeit Dollar
Sally Jones has a dozen Voyageur silver dollars. However, only eleven of the coins are true silver d ...
随机推荐
- K3WISE常用表
在后台数据库ICClassType表中,字段FID<0的是老单,FID>0的是新单. ----------------系统设置------------------------ FS ...
- 自己封装的一个类似axios的请求
下载:https://pan.baidu.com/s/1k0-CpGGtfDTsCm85NMfuHA 使用: axios({ method:'post', baseURL:baseAddress, u ...
- Vue 组件异步加载(懒加载)
一.vue的编译模式 (1)路由配置信息 //eg1: const MSite = resolve => require.ensure([], () =>resolve(require([ ...
- Python 考试练习
1.算法复杂度分为:时间复杂度和空间复杂度 一个算法的优劣主要从算法的执行时间和所需要占用的存储空间两个方面衡量. 时间复杂度:是指执行算法所需要的计算工作量,也即算法的执行时间 (注意:是算法的执 ...
- spring cloud(五)熔断监控Hystrix Dashboard和Turbine
Hystrix-dashboard是一款针对Hystrix进行实时监控的工具,通过Hystrix Dashboard我们可以在直观地看到各Hystrix Command的请求响应时间, 请求成功率等数 ...
- Mongoose 'static' methods vs. 'instance' methods
statics are the methods defined on the Model. methods are defined on the document (instance). We may ...
- 德邦总管 修改oracle数据库用户密码的方法
WIN+R打开运行窗口,输入cmd进入命令行: 输入sqlplus ,输入用户名,输入口令(如果是超级管理员SYS的话需在口令之后加上as sysdba)进入sql命令行: 连接成功后,输入“s ...
- 利用pom配置实现静态文件拷贝
java项目有时候需要将一些静态文件拷贝到生成的test-class文件夹或者其他地方,虽然手动拷贝可以做到,但是很麻烦.今天主要讲解如何利用pom.xml进行动态的拷贝. 具体的配置信息如下,在de ...
- springboot秒杀课程学习整理1-4
1)商品模型设计 (应该是先设计商品的model,然后才是数据库表) 模型字段(id,title,price(double),stock(库存),description,sales,imgUrl) 创 ...
- linux网络编程基础--(转自网络)
转自 http://www.cnblogs.com/MyLove-Summer/p/5215287.html Linux下的网络编程指的是socket套接字编程,入门比较简单. 1. socket套接 ...