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

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

求给定字符集中所有字符的全部组合。首先从文件“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

相关文章

hdu4869(逆元+求组合数)

//输入n,m,n表示翻牌的次数,m表示牌的数目,求经过n次操作后共有几种状态#include<iostream>#include<algorithm>#include<cstring>#include<stack>#include<queue>#include<set>#include<map>#include<stdio.h>#include<stdlib.h>#includ

matlab读取NC文件(含group)

matlab读取NC文件(含group): NC文件数据结构: 代码: % 打开 NetCDF 文件filename = 'your_file.nc'; % 替换为你的文件名% 使用 netcdf.open 函数打开文件ncid = netcdf.open(filename, 'NC_NOWRITE');% 查看文件中的组% 假设我们想读取名为 "group1" 的组groupName

每日一题|牛客竞赛|四舍五入|字符串+贪心+模拟

每日一题|四舍五入 四舍五入 心有猛虎,细嗅蔷薇。你好朋友,这里是锅巴的C\C++学习笔记,常言道,不积跬步无以至千里,希望有朝一日我们积累的滴水可以击穿顽石。 四舍五入 题目: 牛牛发明了一种新的四舍五入应用于整数,对个位四舍五入,规则如下 12345->12350 12399->12400 输入描述: 输入一个整数n(0<=n<=109 ) 输出描述: 输出一个整数

string字符会调用new分配堆内存吗

gcc的string默认大小是32个字节,字符串小于等于15直接保存在栈上,超过之后才会使用new分配。

如何将一个文件里不包含某个字符的行输出到另一个文件?

第一种: grep -v 'string' filename > newfilenamegrep -v 'string' filename >> newfilename 第二种: sed -n '/string/!'p filename > newfilenamesed -n '/string/!'p filename >> newfilename

C和指针:字符串

字符串、字符和字节 字符串基础 字符串就是一串零个或多个字符,并且以一个位模式为全0的NUL字节结尾。 字符串长度就是字符串中字符数。 size_t strlen( char const *string ); string为指针常量(const修饰string),指向的string是常量不能修改。size_t是无符号数,定义在stddef.h。 #include <stddef.h>

PHP字符串全排列

方法一: $str = 'abc';$a =str_split($str);perm($a, 0, count($a)-1);function perm(&$ar, $k, $m) {if($k == $m){ echo join('',$ar), PHP_EOL;}else {for($i=$k; $i<=$m; $i++) {swap($ar[$k], $ar[$i]);perm($ar

PHP7扩展开发之字符串处理

前言 这次,我们来看看字符串在PHP扩展里面如何处理。 示例代码如下: <?phpfunction str_concat($prefix, $string) {$len = strlen($prefix);$substr = substr($string, 0, $len);if ($substr != $prefix) {return $prefix." ".$string;} else

Go组合

摘要 golang并非完全面向对象的程序语言,为了实现面向对象的继承这一神奇的功能,golang允许struct间使用匿名引入的方式实现对象属性方法的组合 组合使用注意项 使用匿名引入的方式来组合其他struct 默认优先调用外层方法 可以指定匿名struct以调用内层方法 代码 package mainimport ("fmt")type People struct{}type Pe

十一、C语言:字符串函数

目录 一、strlen 二、strcpy 三、strcat  四、strcmp 五、strstr 六、strtok 七、strerror 一、strlen 注意:strlen()函数的返回值是size_t,两个size_t相减仍为无符号数 int main(){char arr[10] = "abc";char brr[10] = "abc123";if (strl