zoukankan      html  css  js  c++  java
  • 小谈汉字转换成拼音辅助函数和辅助类

    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;
    
    }
  • 相关阅读:
    48. Rotate Image
    83. Remove Duplicates from Sorted List
    46. Permutations
    HTML5笔记
    18. 4Sum
    24. Swap Nodes in Pairs
    42. Trapping Rain Water
    Python modf() 函数
    Python min() 函数
    Python max() 函数
  • 原文地址:https://www.cnblogs.com/finallyliuyu/p/2048138.html
Copyright © 2011-2022 走看看