2017-5-26

题目描述

大概就是将字符组合,判断它是否在给定的文件中

解答

这道题字符组合我用的是深度搜索,我在查找时只打开了一次文件,
每次继续上次的查找位置查找,因为我们求出来的字符组合本身就是有序的。
需要注意的是得回去一行。

代码

/*
ID: 18795871
PROG: namenum
LANG: C++
*/
#include<iostream>
#include<fstream>
#include<cstring>
#include<cstdio>
using namespace std;ifstream fin1("dict.txt");
ifstream fin("namenum.in");
ofstream fout("namenum.out");const int N = 12;
char x[8][4]={"ABC","DEF","GHI","JKL","MNO","PRS","TUV","WXY"};
char s[N+1],r[N+1],str2[N+1]="\0";
int l,flag=0;
int b=0;bool res(){char str1[N+1];if (strcmp(str2,r)==0) return true;if (strcmp(str2,r)>0) return false;while (!fin1.eof()){fin1>>str1;strcpy(str2,str1);b++;if (strcmp(r,str1)==0) return true;if (strcmp(str1,r)>0) return false;}
}void dfs(int step){if (step==l){r[l]='\0';if (res()){flag=1;fout<<r<<endl;}return ;}for (int i=0;i<3;i++){r[step]=x[s[step]-'0'-2][i];dfs(step+1);}
}int main()
{char c;l=0;while(fin>>c){if (c=='\n') break;s[l++]=c;}dfs(0);if (!flag) fout<<"NONE"<<endl;return 0;
}

需要注意的几点:
(1)读取dict.txt如果定义全局的,那么每次是从上一次结束的地方继续读取的,如果是在函数里,那么每次都是从头开始读取的。
(2)如果每次从头开始读取,是会造成超时的。
(3)如果每次都从之前的地方继续读取的话,可能会存在读取的比判断的快,此时我们需要记住上一次读取的字符串tmp,如果它的字典序大于要判断的那个字符串的话,那么我们就不要进入循环进行读取了。

/*
ID: 18795871
PROG: namenum
LANG: C++
*/
#include<iostream>
#include<fstream>
#include<cstring>
using namespace std;ifstream fin("namenum.in");
ofstream fout("namenum.out");
ifstream din("dict.txt");const int N = 12;
char cmp[8][3]={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','R','S','T','U','V','W','X','Y'};
char x[N+1],r[N+1],tmp[N+1];
int n;
bool flag;bool isCompare(){if (!strcmp(tmp,r)) return true;if (strcmp(tmp,r)>0) return false;char s[N+1];while (din>>s){if (strcmp(s,r)==0){return true;}if (strcmp(s,r)>0){strcpy(tmp,s);return false;}}
}void dfs(int step){if (step==n){r[n]='\0';  if (isCompare()){flag=true;for (int i=0;i<n;i++){fout<<r[i]; }fout<<endl;}return ;}for (int i=0;i<3;i++){r[step]=cmp[x[step]-'0'-2][i];dfs(step+1);}
} int main(){while (fin>>x){flag=false;n=strlen(x);dfs(0);if (!flag) fout<<"NONE"<<endl;}return 0;
}

USACO-Section1.3 Name That Number (遍历与字符串比较)相关推荐

  1. 循环遍历Java字符串字符的规范方法——类似python for ch in string

    比如我将string作为CNN 文本处理输入: float [] input = new float[maxLength]; // 1 sentence by maxLenWords// int[] ...

  2. android遍历拼接字符串,写个批处理脚本帮忙干活---遍历amp;字符串处理

    这次打算写几篇关于脚本方面的博客,主要是记录一下 Gradle 脚本和批处理脚本的一些写法,方便后续查阅. 前言 平常开发过程中,一些较为重复的手工性工作,如果能让脚本来帮忙处理,自然是最好的,刚好之 ...

  3. 遍历这些字符串,如果字符串没有包含数字的,就将字符串中的小写字母转成大写字母并打印字符串

    package cn.silence;public class StrDemo3 {/*** 有如下字符串:"12ab","java","cd&quo ...

  4. 遍历这些字符串,如果字符串没有包含数字的, * 就将字符串中的小写字母转成大写字母并打印字符串

    package Day08;import java.util.Scanner;/*** 有如下字符串:"12ab","java","cd", ...

  5. 在html循环字母,怎么样能遍历一个字符串

    用java怎样实现遍历一个字符串的每一个字母 Java遍历一个字符串的每一个字母 String str = "asdfghjkl"; 方法一 String str = " ...

  6. jq 遍历html字符串片段中的Img标签 src

    jq 遍历html字符串片段中的Img标签 src //拿一个div装着后面好对标签处理 $("#imgDiv").html(data.content); $("#img ...

  7. 字符编码详解及利用C++ STL string遍历中文字符串

    作者:非妃是公主 专栏:<笔记><C++> 博客地址:https://blog.csdn.net/myf_666 个性签:顺境不惰,逆境不馁,以心制境,万事可成.--曾国藩 文 ...

  8. JS遍历Json字符串

    JS遍历Json字符串 1.将Json字符串转换成JSON对象 var t='{"firstName": "cyra", "lastName" ...

  9. 用java怎样实现遍历一个字符串的每一个字母

    Java遍历一个字符串的每一个字母 String str = "asdfghjkl"; 方法一 String str = "asdfghjkl"; for(in ...

  10. 遍历获取字符串中的每一个字符

    /*遍历获取字符串中的每一个字符*/ /*public final char charAt(int index)              * 读取当前给定索引处的字符              */ ...

最新文章

  1. 056_Unicode字符官方标准七
  2. DataGrid/DataList封装操作函数库!
  3. Scala元组:存放各种相同或不同类型的数据
  4. 1CCTableView的使用,TableView响应和小格子tableView实现
  5. 4、mybatis通过配置类Configuration 实现初始化
  6. java保留二位小数_java使double保留两位小数的多方法 java保留两位小数
  7. c语言 隐式声明,关于C#:隐式函数声明和链接
  8. 应急响应的整体思路一
  9. webgame开发入门
  10. Torch中的benchmarkdeterministic是什么含义?
  11. 搭建一个多对多的音视频通信服务
  12. Windows 10 已禁用输入法
  13. 量子笔记:多比特量子门
  14. Java基础:IO 流中的 flush
  15. base64编码和解码的js工具函数
  16. 教你用python在excel中“画画”
  17. 用Beautiful Soup进行屏幕抓取
  18. 通信协议设计注意事项
  19. 智慧农业发展(生产,加工,电商,文旅,人才)
  20. 【精品软件】6502电气集中仿真软件

热门文章

  1. githup用户名密码怎么看_MacBook Pro 开机密码忘记解决方法
  2. leetcode:剑指offer----二维数组中查找
  3. 轨迹相似性度量方法总结
  4. 图片也要查重了?期刊用AI审论文防造假,旋转/翻转/拉伸都不行
  5. Cell Research | 单细胞测序技术揭示派杰氏病的致病机制
  6. 2020最新直播源地址下载txt_TXT追书免费小说app安卓版下载-TXT追书免费小说最新版下载v5.0.0...
  7. 1.4编程基础之逻辑表达式与条件分支 01判断数正负
  8. python 怎么设置背景为白色_pycharm怎么将背景颜色设置成白色?
  9. 环信SDK 踩坑记webIM篇(三)
  10. mui HTML5plus 批量上传文件