从文件读取字符串,并求出该字符串包含的字符集中所有字符的全部组合

本文主要是介绍从文件读取字符串,并求出该字符串包含的字符集中所有字符的全部组合,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

求给定字符集中所有字符的全部组合。首先从文件“data.txt”中读取字符集,并识别出字符集中的每一个字符。假设字符集的总字符数为n,利用这个n个字符组成长为n的字符串。其中每个字符均可重复使用,每个字符串中也不必包含全部字符。试求出所有长为n的字符串集合。最后将所求的的集合写入文件“result.txt”中。

程序输入输出样例

– data.txt中的内容为

@#

– result.txt中的内容为

@@

@#

#@

##


枚举 递归     卡了半天,纯粹的弱智不解释。。。。。


//
//  main.cpp
//  str
//
//  Created by Bryan on 14-6-28.
//  Copyright (c) 2014年 Bryan. All rights reserved.
//#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <fstream>
#include <list>using namespace std;list<char> GetCharsFromFile()
{ifstream inFile("data.txt");list<char> ret;if(inFile){string s;getline(inFile,s);for(int i = 0;i<s.length();i++){ret.push_back(s[i]);}ret.sort();ret.unique();inFile.close();return ret;}return ret;
}void CharCombination(vector<string> &strVec,list<char> &charList,char *s,int step)
{if(step == charList.size()){s[step] = '\0';string stmp(s);strVec.push_back(stmp);return;}for(list<char>::iterator it = charList.begin();it != charList.end();it++){s[step] = *it;CharCombination(strVec,charList ,s, step + 1);}}int main(int argc, const char * argv[])
{list<char> charList;charList = GetCharsFromFile();vector<string> ret;char *cstr = new char[charList.size() + 1];CharCombination(ret,charList, cstr,0);ofstream outFile;outFile.open("result.txt");for(int i = 0;i<ret.size();i++)outFile<<ret[i]<<endl;outFile.close();return 0;
}


#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>using namespace std;void func(vector<char> & s,char *ret,int k,int N,ofstream &outFile)
{if(k == N ){ret[N] = '\0';cout<<ret<<endl;outFile<<ret<<endl;return;}for(int i = 0;i<N;i++){ret[k] = s[i];func(s,ret,k+1,N,outFile);}
}
int main()
{ifstream inFileStream;inFileStream.open("data.txt");ofstream outFileStream;outFileStream.open("result.txt");char *str = new char[1000];inFileStream.getline(str,1000);vector<char> vec;for(int i = 0;i<1000;i++){if(str[i] != '\0')vec.push_back(str[i]);elsebreak;}int N = vec.size();char * ret = new char[N+1];func(vec,ret,0,N,outFileStream);inFileStream.close();outFileStream.close();getchar();}



#include <iostream>
#include <fstream>
#include <string>
#include <vector>using namespace std;void func(const vector<char> &charVec,char* finalStr,ofstream & outFile,int k,int N)
{if(k==N){finalStr[N]= '\0';cout<<finalStr<<endl;outFile<<finalStr<<endl;return;}for(int i= 0;i<N;i++){finalStr[k] = charVec[i];func(charVec,finalStr,outFile,k+1,N);}
}int main()
{ofstream outFile;outFile.open("result.txt");ifstream inFile;inFile.open("data.txt");string inStr;vector<char> charVec;outFile<<"The chars are: ";cout<<"The chars are: ";while(getline(inFile,inStr)){for(string::iterator it = inStr.begin();it != inStr.end();it++){cout<<(*it)<<" ";outFile<<(*it)<<" ";charVec.push_back(*it);}}cout<<endl;int N = charVec.size();char* outStr =new char[N+1];func(charVec,outStr,outFile,0,N);outFile.close();inFile.close();getchar();
}


这篇关于从文件读取字符串,并求出该字符串包含的字符集中所有字符的全部组合的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/570508

相关文章

Java实现将HTML文件与字符串转换为图片

《Java实现将HTML文件与字符串转换为图片》在Java开发中,我们经常会遇到将HTML内容转换为图片的需求,本文小编就来和大家详细讲讲如何使用FreeSpire.DocforJava库来实现这一功... 目录前言核心实现:html 转图片完整代码场景 1:转换本地 HTML 文件为图片场景 2:转换 H

Java使用正则提取字符串中的内容的详细步骤

《Java使用正则提取字符串中的内容的详细步骤》:本文主要介绍Java中使用正则表达式提取字符串内容的方法,通过Pattern和Matcher类实现,涵盖编译正则、查找匹配、分组捕获、数字与邮箱提... 目录1. 基础流程2. 关键方法说明3. 常见场景示例场景1:提取所有数字场景2:提取邮箱地址4. 高级

使用Java读取本地文件并转换为MultipartFile对象的方法

《使用Java读取本地文件并转换为MultipartFile对象的方法》在许多JavaWeb应用中,我们经常会遇到将本地文件上传至服务器或其他系统的需求,在这种场景下,MultipartFile对象非... 目录1. 基本需求2. 自定义 MultipartFile 类3. 实现代码4. 代码解析5. 自定

MySQL 数据库表操作完全指南:创建、读取、更新与删除实战

《MySQL数据库表操作完全指南:创建、读取、更新与删除实战》本文系统讲解MySQL表的增删查改(CURD)操作,涵盖创建、更新、查询、删除及插入查询结果,也是贯穿各类项目开发全流程的基础数据交互原... 目录mysql系列前言一、Create(创建)并插入数据1.1 单行数据 + 全列插入1.2 多行数据

Python 字符串裁切与提取全面且实用的解决方案

《Python字符串裁切与提取全面且实用的解决方案》本文梳理了Python字符串处理方法,涵盖基础切片、split/partition分割、正则匹配及结构化数据解析(如BeautifulSoup、j... 目录python 字符串裁切与提取的完整指南 基础切片方法1. 使用切片操作符[start:end]2

MyBatis的xml中字符串类型判空与非字符串类型判空处理方式(最新整理)

《MyBatis的xml中字符串类型判空与非字符串类型判空处理方式(最新整理)》本文给大家介绍MyBatis的xml中字符串类型判空与非字符串类型判空处理方式,本文给大家介绍的非常详细,对大家的学习或... 目录完整 Hutool 写法版本对比优化为什么status变成Long?为什么 price 没事?怎

Linux从文件中提取特定内容的实用技巧分享

《Linux从文件中提取特定内容的实用技巧分享》在日常数据处理和配置文件管理中,我们经常需要从大型文件中提取特定内容,本文介绍的提取特定行技术正是这些高级操作的基础,以提取含有1的简单需求为例,我们可... 目录引言1、方法一:使用 grep 命令1.1 grep 命令基础1.2 命令详解1.3 高级用法2

MySQL常用字符串函数示例和场景介绍

《MySQL常用字符串函数示例和场景介绍》MySQL提供了丰富的字符串函数帮助我们高效地对字符串进行处理、转换和分析,本文我将全面且深入地介绍MySQL常用的字符串函数,并结合具体示例和场景,帮你熟练... 目录一、字符串函数概述1.1 字符串函数的作用1.2 字符串函数分类二、字符串长度与统计函数2.1

SpringBoot多环境配置数据读取方式

《SpringBoot多环境配置数据读取方式》SpringBoot通过环境隔离机制,支持properties/yaml/yml多格式配置,结合@Value、Environment和@Configura... 目录一、多环境配置的核心思路二、3种配置文件格式详解2.1 properties格式(传统格式)1.

解决pandas无法读取csv文件数据的问题

《解决pandas无法读取csv文件数据的问题》本文讲述作者用Pandas读取CSV文件时因参数设置不当导致数据错位,通过调整delimiter和on_bad_lines参数最终解决问题,并强调正确参... 目录一、前言二、问题复现1. 问题2. 通过 on_bad_lines=‘warn’ 跳过异常数据3