Name That Number

USACO答案name that number USACO答案,采用C++写的,题目是:name that number. 立即下载

Name That Number

Description

在威斯康辛州牛守志大农场经营者之中,都习惯于请会计部门用连续数字给奶牛打上烙印。然而,奶牛们并不认为这个档案系统是一种优势,它们希望用它们喜欢的名字来呼叫它们的同伴,而不是用像这个的语句"C’mon, #4364, get along."。
请写一个程序来帮助可怜的牧牛工将一只奶牛的烙印编号翻译成一个可能的名字。因为母牛们现在都有蜂窝式马鞍电话了,使用标准的按键的排布来把将数目翻译为文字:( 除了 “Q” 和 “Z”)

2: A,B,C     5: J,K,L    8: T,U,V
3: D,E,F     6: M,N,O    9: W,X,Y
4: G,H,I     7: P,R,S

可接受的名字都被放在这样一个叫作"dict.txt" 的文件中,它包含一连串的少于 5,000个可被接受的牛的名字(所有的名字都是大写的且已按字典序排列)。
例如,编号4734产生以下所有名称:

GPDG GPDH GPDI GPEG GPEH GPEI GPFG GPFH GPFI GRDG GRDH GRDI
GREG GREH GREI GRFG GRFH GRFI GSDG GSDH GSDI GSEG GSEH GSEI
GSFG GSFH GSFI HPDG HPDH HPDI HPEG HPEH HPEI HPFG HPFH HPFI
HRDG HRDH HRDI HREG HREH HREI HRFG HRFH HRFI HSDG HSDH HSDI
HSEG HSEH HSEI HSFG HSFH HSFI IPDG IPDH IPDI IPEG IPEH IPEI
IPFG IPFH IPFI IRDG IRDH IRDI IREG IREH IREI IRFG IRFH IRFI
ISDG ISDH ISDI ISEG ISEH ISEI ISFG ISFH ISFI

碰巧的是,在这81个名称中只有一个“GREG”是在有效名字文件中可被接受的,即只有“GREG”在文件中有出现。
编写一个程序,给出奶牛的编号,打印可以从编号生成的所有有效名字,如果没有有效名字,则打印“NONE”。序列号可以长达十几位数。

PROGRAM NAME: namenum

INPUT FORMAT

一行,长度为1到12位。

SAMPLE INPUT (file namenum.in)

4734

OUTPUT FORMAT

可以从输入生成的有效名称列表,每行一个,按升序字母顺序排列。

SAMPLE OUTPUT(文件名num.out)

GREG

设计算法:

这道题题意理解是一大难点,全英文看着有点费劲,上面的翻译参考了洛谷上面的,应该是讲清楚了。理解清楚了的话那应该就比较简单了。有两种想法:
1、把数字编号换成字母编号然后拿去和有效名字文件中的名字做对比。
2、把有效名字文件中的名字转换为数字编号来做对比。
显然,方法二的工作量是要少一点的,不过方法一应该也能做,但是效率相对较低,比对的时候,如果真的是12位,算算要3的12次方,这个数字想想就不小,所以方法二更优。

C++编写:

/*
ID:  your_id_here
TASK: namenum
LANG: C++                 
*/
#include<iostream>
#include<cstdio>
#include<fstream>
#include<string>
using namespace std;


string s="2223334445556667077888999";

int main()
{
    freopen("namenum.in","r",stdin);
    freopen("namenum.out","w",stdout);
    string num,str,temp;
    bool flag=true;
    cin>>num;
    ifstream din("dict.txt");
    while(din>>str)
    {
        int len=str.size();
        temp="";
        if(len==num.size())           //位数不同直接跳过
        {
            for(int i=0;i<len;i++)    //字母转换为数字
            {
                temp+=s[str[i]-'A'];
            }
            if(temp==num)             
            {
                cout<<str<<endl;
                flag=false;
            }
        }
    }
    if(flag)
        cout<<"NONE"<<endl;

    return 0;
}

另附USACO参考代码(感觉挺麻烦的):
ANALYSIS

stm32学习笔记-启动文件 1、配置栈 Stack_Size EQU 0x00000400 AREA STACK, NOINIT, READWRITE, ALIGN=3 Stack_Mem SPACE Stack_Size __initial_sp EQU:相当于C中的define,定义Stack_Size = 0x00000400。 AREA: 指... 阅读详情

相关推荐

USACO中name that number的解法

这个题出的很有技巧,我做了三四遍没有AC,(我的水平水)*##,上网看了一下,找到了一个非常好的思路, 具体如下,每一组数字代表着N中不同的字符串,同理,每一个字符串都只对应着一组数字, 如果读取数字转成一大堆字符串,再从dic中找,时间复杂度非常大,所以,我们可以从dic中读取 字符串,然后全部转为数字,从比赛给的file.in文件中读取数字,直接和dic中转换出来的数字进行匹配 ,这样

KarlDoenitz的专栏 2009

R语言的下载、安装及环境配置(Rstudio&VSCode)

R for Windows是一个免费的用于统计计算和统计制图的优秀工具,是R语言开发工具。它拥有数据存储和处理系统、数组运算工具(其向量、矩阵运算方面功能尤其强大)、完整连贯的统计分析工具、优秀的统计制图等功能。提供的图形界面,可以在其中访问控制台、创建脚本或安装其他软件包。

zegeai的博客 2万+

USACO 1.2.3 Name That Number 命名那个数字

Name That Number Among the large Wisconsin cattle ranchers, it is customary to brandcows with serial numbers to please the Accounting Department. The cowhands don't appreciate the advantage of this

才子年华 1007

【GAMES201学习笔记】物质点法入门

《GAMES201》 学习笔记

捕鱼维的个人小站 9201

基于COMSOL电弧动态仿真模型优化:高收敛性可修改吹弧方案解析

在多物理场耦合分析中,电弧动态仿真历来是数值稳定性的难点:温度从室温跃升至数万开尔文,电导率随温度呈数量级跳变,流动、传热与电磁场相互牵制,极易引发求解器不收敛或初始值不一致等问题。如何构建高收敛性的数值模型,成为开关设备灭弧性能优化的重要技术基础。通过合理的几何简化、全耦合求解器配置、辅助扫描初始化策略以及参数化建模手段,可以实现对吹弧方案的灵活调整与批量寻优,从而系统性评估气流速度、喷口形状、触头间距等关键因素对熄弧性能的影响。这类仿真方法广泛应用于断路器、接触器等高压电器产品研发,为灭弧室结构设计提供

weixin_29758911的博客 350

usaco Name That Number

此题花了20多分钟才看懂 ,晕,原来是给了你一套字典................ 下面是我的code,ac了,但是没经过自己本机调试,如果因为此code引起的死机,本人概不负责!!! /* ID : Your ID LANG : C++ PROB : namenum */ #include #include #include #include #include #includ

yueqiq 1万+

期货分仓系统CTP协议/国内期货软件源码

期货分仓系统与CTP协议以及国内期货软件源码是期货交易技术领域的几个重要方面。

q2247238820的博客 962

usaco 1-2-3 Name That Number

usaco持续更新中 nocow翻译 Name That Number 命名那个数字 目录  [隐藏]  1 描述2 格式3 SAMPLE INPUT4 SAMPLE OUTPUT 描述 在威斯康辛州牛守志大农场经营者之中,都习惯于请会计部门用连续数字给母牛打上烙印。但是,母牛本身并没感到这个系统的便利,

水题ac机的博客 945

Python结合海康威视工业相机SDK实现高效图像采集与处理

本文详细介绍了如何使用Python结合海康威视工业相机SDK实现高效的图像采集与处理。内容涵盖从环境搭建、SDK核心模块理解,到完整的图像采集流程拆解,包括设备枚举、参数设置、主动取流以及关键的像素格式转换。同时,文章深入探讨了触发模式、参数控制等高级应用,并提供了性能优化建议和可复用的相机操作类封装,帮助开发者快速构建稳定的机器视觉应用。

weixin_29043895的博客 350

AD9613操作控制

输出250M时钟给AD9613,过FPGA ILA逻辑分析仪将AD9613采集的两个通道ADC数据250M数据显示出来。其中AD9613输出的是LVDS数据,通过select IO核转为并行数据。 一,搜索IP核:selectIO interface wizad ,并双击配置 配置为input,DDR模式,数据位宽为12bit,IO类型为差分,这里配置的是12对数据差分对。然后配置外部差分时钟。 将tap setting 设置为13,将时钟的边沿对准数据的中间,以免数据出错 二,

wangjie36的博客 4050

USACO section 1.2.3 Name That Number

USACO section 1.2.3 Name That Number 1. 比较简单,但是用到了文件读写,终于明白了给的test代码中的fout和fin是什么意思了,哈哈; 2. 如果按照一般的思路,肯定会超时,所以把dict转换成数字,这样的算法效率是固定的...

dayong9372的博客 162

YOLO蒸馏原理篇之---MGD、CWD蒸馏

本文详细介绍了特征蒸馏中的两种经典有效方法,MGD和CWD蒸馏

qq_41920323的博客 3241

USACO Name That Number

Name That Number Among the large Wisconsin cattle ranchers, it is customary to brand cows with serial numbers to please the Accounting Department. The cow hands don't appreciate the advantage of

码代码的猿猿 1392

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

USACO1.2 Name That Number 解题报告

解题思考顺序: Attempt:很简单的把字典读进去了顺序查找,然后又很天真的把数字用递归进行了全排列,自己在本机上实验的结果很理想。。可是悲剧的就是严重超时! Attempt:后来试着不用递归求出全排列,貌似还是很困难的。。卡住了很久很久。。至今没有编出来,还是代码能力不行 Attempt:我在别人的解题报告中也发现了有同样超时的问题,他也试过,二分查找字典也是很慢的,同样超时。。。

Panda_Ming 616

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

name that number

#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;string.h&gt; int main() { FILE *in = fopen ("namenum.in", "r"); FILE *in2 = fopen ("dict.txt", "r"); FILE *out = f

sharing and improving! 287

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

[Java] Name That Number

/* Use the slash-star style comments or the system won't see your identification information */ /* ID: lincans1 LANG: JAVA TASK: namenum */ import java.io.*; import java.util.*; public class namenum { private String number; private Map<Character,

lincs's blog 188

【USACO】name that number

{ ID: anniel11 PROG: namenum LANG: PASCAL } Program namenum; var i,n,l:integer; s,s2:string; dicl:array[1..12] of integer; dic:array[1..12,1..2000] of integer; function trans...

baizachong7524的博客 142
上一篇: cin.ignore()用法
下一篇: Palindromic Squares
Slatter
博客等级 码龄8年 105粉丝 128原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值