小谈汉字转换成拼音辅助函数和辅助类
2011-05-16 22:02
288 查看
void StringManipulation::TrimString(string &str,const string val) { str.erase(0,str.find_first_not_of(val));//去掉字符串前面的空白符 int pos=str.find_last_not_of(val)+val.size(); if (pos<str.size()) { str.erase(pos); } //去掉字符串后面的空白符 }
#pragma once #include "common.h" class GraphRepresentation { public: GraphRepresentation(void); ~GraphRepresentation(void); map<int,string>Vertex; map<pair<int,int>,string>GraphR; void GetPaths(vector<vector<int>>&paths,int beginindex,int endindex); };
#include "StdAfx.h" #include "GraphRepresentation.h" GraphRepresentation::GraphRepresentation(void) { } GraphRepresentation::~GraphRepresentation(void) { } void GraphRepresentation:: GetPaths(vector<vector<int>>&paths,int beginindex,int endindex) { stack<int>mystack; vector<int> singlepath; int *vertexsStatus=new int[Vertex.size()];//0,未在栈内,1已经在栈内。 map<pair<int,int>,int>arcstatus; for (int i=0;i<Vertex.size();i++) { vertexsStatus[i]=0; } for (map<pair<int,int>,string>::iterator it=GraphR.begin();it!=GraphR.end();it++) { arcstatus[it->first]=0; } mystack.push(beginindex); vertexsStatus[beginindex]=1; int justpopup=-1;//保存刚刚出栈的元素 while(!mystack.empty()) { int elem=mystack.top(); if (elem==endindex)//出栈的第一个条件找到了目的节点 { //以下代码完成栈的遍历 while(!mystack.empty()) { int tmp=mystack.top(); mystack.pop(); singlepath.push_back(tmp); } for (vector<int>::reverse_iterator rit=singlepath.rbegin();rit!=singlepath.rend();rit++) { mystack.push(*rit); } paths.push_back(singlepath); singlepath.clear(); vertexsStatus[elem]=0; for (int k=0;k<Vertex.size();k++) { if (vertexsStatus[k]==0) { if (arcstatus.count(make_pair(elem,k))) { arcstatus[make_pair(elem,k)]=0; } } } mystack.pop(); } else { int i=0; for (;i<Vertex.size();i++) { if (GraphR.count(make_pair(elem,i))&&vertexsStatus[i]==0&&arcstatus[make_pair(elem,i)]==0) { mystack.push(i); vertexsStatus[i]=1; arcstatus[make_pair(elem,i)]=1; //graphR.erase(make_pair(elem,i)); break; } } if (i==Vertex.size())//出栈的第二个条件,没有可以往栈内添加的后续节点了。 { int elemtmp=mystack.top(); vertexsStatus[elemtmp]=0; for (int k=0;k<Vertex.size();k++) { if (vertexsStatus[k]==0) { if (arcstatus.count(make_pair(elemtmp,k))) { arcstatus[make_pair(elemtmp,k)]=0; } } } mystack.pop(); } } } delete vertexsStatus; }
相关文章推荐
- EXLE中将汉字转换为拼音首字母的函数
- PHP汉字转换拼音的函数代码
- 汉字 转换成 拼音 - PHP 函数 by 绿色学院 - Green Institute
- 【转】SQL汉字转换为拼音的函数
- php中将汉字转换成拼音的函数代码
- PHP汉字转换拼音的函数代码
- 汉字转换为拼音的函数
- 汉字转换拼音或拼音首字母(两个函数)--记录一下
- 汉字转换拼音函数
- sql语句中调用将汉字转换为拼音函数
- PHP汉字转换拼音的函数代码
- 汉字转换成拼音用函数
- 汉字转换拼音或拼音首字母(两个函数)
- PHP 中文汉字转换成拼音函数
- PHP 中文汉字转换成拼音函数
- 用正则表达式判断字符串是汉字还是拼音的js函数代码
- 汉字转换拼音的代码
- Python 将拼音转换成汉字
- Java-简体汉字转换成拼音