北大poj-1002题-487-3279

原题链接:


http://poj.org/problem?id=1002。


主要涉及动态字符串数组的排序和记重。


#include
#include
#include
#include
#include
using namespace std;

map table;

int pstrcmp(const void *p1, const void *p2)
 {
  return strcmp((char*)(*(int*)(p1)), (char*)(*(int*)(p2)));
 }


void init_table()
{
 char c='A';
 for(int i=2;i<=6;i++)
    for(int j=0;j<3;j++)
     {
     	table.insert(map::value_type(c++,'0'+i));
	 }
 table['P']='7';   
 table['R']='7';  
 table['S']='7';   
 c='T';
 for(int i=8;i<=9;i++)
     for(int j=0;j<3;j++)
     table.insert(map::value_type(c++,'0'+i));
}

string generate_str(string input)
{
	string temp="12345678";
	int k=0;
	int sz=input.size();
	for(int j=0;j='0'&&input[j]<='9')
			temp[k++]=input[j];
		if(input[j]>='A'&&input[j]<='Y')
			temp[k++]=table[input[j]];
		
	}
	temp[k]=0;
	return temp;
}

int main()
{
	int ct;
	int i,j;
	int num=1;
	cin>>ct;
	string temp;
	bool *flag=new bool[ct];
	
	char **pp=new char*[ct];
	for(i=0;i>temp;
		temp=generate_str(temp);
		strcpy(*(pp+i),temp.c_str());
		flag[i]=0;
		
	}
	
	qsort(pp,ct,8,pstrcmp);

	
	
	for(i=0;i=2)
         	{
         		for(j=0;j<3;j++)
         	    	cout<<*(*(pp+i)+j);
         	    cout<<"-";
         	    for(j=3;j<7;j++)
         	    	cout<<*(*(pp+i)+j);
         	    cout<<"  "<

你可能感兴趣的:(算法)