`
bbsunchen
  • 浏览: 230639 次
  • 性别: Icon_minigender_1
  • 来自: 天朝帝都
社区版块
存档分类
最新评论

USACO Name That Number源码

阅读更多

这次一直没过的是,C++的char转int,

要用这一句

 int rightNum = (int)num[i] - 48;

 一定要减去48才行。。调了一会儿才发现

 

下面是源码

/*
ID: bbsunch2
PROG: namenum
LANG: C++
*/
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <stdlib.h>

using namespace std;

char number_letter[10][3] = {
                            {},// 0
                            {},// 1
                            {'A','B','C'}, // 2
                            {'D','E','F'}, // 3
                            {'G','H','I'}, // 4
                            {'J','K','L'}, // 5
                            {'M','N','O'}, // 6
                            {'P','R','S'}, // 7
                            {'T','U','V'}, // 8
                            {'W','X','Y'}  // 9
                            };

int main()
{
    ofstream fout ("namenum.out");
    ifstream fin ("namenum.in");
    ifstream fdict ("dict.txt");
    string word;
    vector <string> dicts;
    while(fdict.good() && !fdict.eof())
    {
        getline(fdict,word,'\n');
        dicts.push_back(word);
    }

    string num;
    fin >> num;
    int numSize = num.size();

    for(vector<string>::iterator iter=dicts.begin();iter!=dicts.end();)
    {
        word = *iter;
        int wordSize = word.size();
        if(wordSize != numSize)
        {
            dicts.erase(iter);
            continue;
        }
        ++iter;
    }

    for(int i = 0; i < numSize; i++)
    {
        int rightNum = (int)num[i] - 48;

        for(vector<string>::iterator iter=dicts.begin();iter!=dicts.end();)
        {
            word = *iter;
            char rightLetter = word[i];
            bool key = false;
            for(int j = 0; j < 3; j++)
            {
                char letter = number_letter[rightNum][j];
                if(letter == rightLetter)
                {
                    key = true;
                    break;
                }
            }
            if(key)
            {
                ++iter;
            }else
            {
                dicts.erase(iter);
                continue;
            }
        }

    }

    if(dicts.size() == 0)
    {
        fout << "NONE" << endl;
    }else
    {
        for(vector<string>::iterator iter=dicts.begin();iter!=dicts.end();++iter)
        {
            word = *iter;
            fout << word << endl;
        }
    }

    return 0;
}

 

0
2
分享到:
评论

相关推荐

    USACO答案name that number

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

    USACO题目Name That Number (namenum)及代码解析

    【Title】: USACO题目"Name That Number (namenum)"及代码解析 【Description】: 本题属于USACO竞赛中的一道题目,要求编写一个程序,将母牛的烙印编号转换为可能的牛名。这些名字是根据特定的数字到字母的映射规则...

    USACO官网93题fps格式 OJ题库

    5 [1.2] 命名那个数字 Name That Number 6 [1.2] 挤牛奶Milking Cows 7 [1.2] 方块转换 Transformations 8 [1.2] 回文平方数 Palindromic Squares 9 [1.2] 双重回文数 Dual Palindromes 10 [1.3] 混合牛奶 Mixing ...

    usaco.rar_USACO 翻译 下载_usaco _usaco 翻译

    USACO,全称为United States阿Olympiad in Informatics,是美国计算机奥林匹克竞赛,旨在为高中生提供一个学习和展示编程技能的平台。这个比赛涵盖了算法、数据结构以及问题解决等多个方面,对于想要深入理解计算机...

    USACO英汉对照题目

    1.2.3 "Name That Number" 可能是关于数字表示和逻辑推理的问题。 1.2.4 "Palindromic Squares" 和 "Dual Palindromes" 强调了对回文数的理解和生成算法。 1.3.1 "Mixing Milk" 和 "Barn Repair" 可能涉及到更复杂的...

    usaco 2010-2011

    ### USACO 2010-2011 季度竞赛概览与关键信息 #### 一、概述 美国计算机奥林匹克(USACO)是面向全球中学生的计算机科学竞赛,旨在发掘并培养计算机科学领域的年轻人才。USACO 2010-2011 季度竞赛于 2010 年 11 月...

    usaco 合集usaco 合集usaco 合集

    《USACO 合集:全面解析与学习指南》 USACO,全称为USA Computing Olympiad,是一项针对中学生举办的在线编程竞赛,旨在提升参赛者的算法设计和问题解决能力。这个合集提供了丰富的资源,包括英文原题、中文译题、...

    USACO总结

    此外,“Transformations”、“Name That Number”等题目进一步加深了对模拟算法的理解。 ### 四、Chapter3:Techniques more subtle 第三章深入探讨了更精细的技术,如“Mixing Milk”题目虽然可能通过模拟解决,...

    USACO答案及详解

    某些USACO题目的答案,很详细,代码清晰结构良好,算法高效易于调试

    USACO全部译题

    - “NameThatNumber”和“CheckerChallenge”等题目可能与字符串处理有关。字符串处理是编程中常见的问题,需要参赛者对字符串的各种操作有较深的了解。 6. 数学计算(Math Computation): - “PrimeCryptarithm”...

    USACO翻译及题解

    USACO,全称United States Computer Olympiad,是一项面向全球中学生的计算机编程竞赛,旨在提升参赛者在算法设计、问题解决以及计算机科学基础方面的技能。这个压缩包文件提供了丰富的资源,帮助参赛者或学习者更好...

    USACO题集及答案

    USACO,全称为United States Computer Olympiad,是一项面向全球中学生的计算机编程竞赛,旨在提升参赛者的算法设计、问题解决和编程能力。该比赛每年举行,分为青铜、白银、黄金和铂金四个级别,难度逐渐递增。...

    usaco traning全部数据

    【标题】"usaco traning全部数据" 涉及的是一个编程竞赛训练平台——USACO(USA Computing Olympiad)的数据集。USACO是一个专门为美国中学生设计的在线编程竞赛,旨在提升参赛者的算法设计和编程能力,特别是在解决...

    usaco心得及总结

    ### USACO心得及总结 #### 第一部分 动态规划 **USACO**(美国计算机奥林匹克竞赛)作为一项国际知名的编程竞赛,不仅考验参赛者的编程能力,还对其算法理解和应用有着极高的要求。其中,动态规划(Dynamic ...

    USACO-Chapter1.rar_it_usaco

    《USACO入门指南——第一章解析》 USACO,全称USA Computing Olympiad,是美国计算机奥林匹克竞赛,旨在培养中学生在算法和编程方面的技能。对于初学者来说,USACO提供了很好的学习路径和挑战。本文将针对USACO的第...

    usaco历年测试数据

    USACO(美国计算机奥林匹克竞赛)是面向全球中学生的一项编程竞赛,主要涉及算法和问题解决能力。这个压缩包文件“usaco历年测试数据”包含了该赛事历年的测试题目和样例输入输出数据,这对于参赛者准备比赛或者提升...

    usaco历年数据---2001

    标签中包含的关键词:“usaco”、“acm”、“pku”、“测试数据”和“源码”,进一步细化了主题。USACO和ACM都是编程竞赛的名称,而“pku”是比赛的组织者之一。"测试数据"意味着这个压缩包包含了用于检验编程解决...

    usaco_training code

    【标题】"USACO训练代码" USACO(USA Computing Olympiad)是美国计算机奥林匹克竞赛,旨在提高高中生的算法编程能力。这个压缩包“usaco_training code”包含的是一系列用于USACO培训的代码,由作者亲自编写。通过...

    USACO 1.1 c++源程序

    USACO,全称为United States Computer Olympiad,是一项面向中学生的国际性计算机编程竞赛,旨在提升参赛者的算法设计和编程能力。USACO比赛通常使用C++语言进行,因此"USACO 1.1 c++源程序"指的是USACO入门阶段1.1...

    USACO做题代码

    USACO,全称为United States Computer Olympiad,是一项面向中学生的国际性计算机编程竞赛,旨在提升参赛者在算法设计、问题解决以及编程方面的技能。USACO比赛通常包含多个编程题目,参赛者需要使用C++、Java等语言...

Global site tag (gtag.js) - Google Analytics