USACO-Section1.3 Name That Number (遍历与字符串比较)
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 (遍历与字符串比较)相关推荐
- 循环遍历Java字符串字符的规范方法——类似python for ch in string
比如我将string作为CNN 文本处理输入: float [] input = new float[maxLength]; // 1 sentence by maxLenWords// int[] ...
- android遍历拼接字符串,写个批处理脚本帮忙干活---遍历amp;字符串处理
这次打算写几篇关于脚本方面的博客,主要是记录一下 Gradle 脚本和批处理脚本的一些写法,方便后续查阅. 前言 平常开发过程中,一些较为重复的手工性工作,如果能让脚本来帮忙处理,自然是最好的,刚好之 ...
- 遍历这些字符串,如果字符串没有包含数字的,就将字符串中的小写字母转成大写字母并打印字符串
package cn.silence;public class StrDemo3 {/*** 有如下字符串:"12ab","java","cd&quo ...
- 遍历这些字符串,如果字符串没有包含数字的, * 就将字符串中的小写字母转成大写字母并打印字符串
package Day08;import java.util.Scanner;/*** 有如下字符串:"12ab","java","cd", ...
- 在html循环字母,怎么样能遍历一个字符串
用java怎样实现遍历一个字符串的每一个字母 Java遍历一个字符串的每一个字母 String str = "asdfghjkl"; 方法一 String str = " ...
- jq 遍历html字符串片段中的Img标签 src
jq 遍历html字符串片段中的Img标签 src //拿一个div装着后面好对标签处理 $("#imgDiv").html(data.content); $("#img ...
- 字符编码详解及利用C++ STL string遍历中文字符串
作者:非妃是公主 专栏:<笔记><C++> 博客地址:https://blog.csdn.net/myf_666 个性签:顺境不惰,逆境不馁,以心制境,万事可成.--曾国藩 文 ...
- JS遍历Json字符串
JS遍历Json字符串 1.将Json字符串转换成JSON对象 var t='{"firstName": "cyra", "lastName" ...
- 用java怎样实现遍历一个字符串的每一个字母
Java遍历一个字符串的每一个字母 String str = "asdfghjkl"; 方法一 String str = "asdfghjkl"; for(in ...
- 遍历获取字符串中的每一个字符
/*遍历获取字符串中的每一个字符*/ /*public final char charAt(int index) * 读取当前给定索引处的字符 */ ...
最新文章
- 056_Unicode字符官方标准七
- DataGrid/DataList封装操作函数库!
- Scala元组:存放各种相同或不同类型的数据
- 1CCTableView的使用,TableView响应和小格子tableView实现
- 4、mybatis通过配置类Configuration 实现初始化
- java保留二位小数_java使double保留两位小数的多方法 java保留两位小数
- c语言 隐式声明,关于C#:隐式函数声明和链接
- 应急响应的整体思路一
- webgame开发入门
- Torch中的benchmarkdeterministic是什么含义?
- 搭建一个多对多的音视频通信服务
- Windows 10 已禁用输入法
- 量子笔记:多比特量子门
- Java基础:IO 流中的 flush
- base64编码和解码的js工具函数
- 教你用python在excel中“画画”
- 用Beautiful Soup进行屏幕抓取
- 通信协议设计注意事项
- 智慧农业发展(生产,加工,电商,文旅,人才)
- 【精品软件】6502电气集中仿真软件
热门文章
- githup用户名密码怎么看_MacBook Pro 开机密码忘记解决方法
- leetcode:剑指offer----二维数组中查找
- 轨迹相似性度量方法总结
- 图片也要查重了?期刊用AI审论文防造假,旋转/翻转/拉伸都不行
- Cell Research | 单细胞测序技术揭示派杰氏病的致病机制
- 2020最新直播源地址下载txt_TXT追书免费小说app安卓版下载-TXT追书免费小说最新版下载v5.0.0...
- 1.4编程基础之逻辑表达式与条件分支 01判断数正负
- python 怎么设置背景为白色_pycharm怎么将背景颜色设置成白色?
- 环信SDK 踩坑记webIM篇(三)
- mui HTML5plus 批量上传文件