Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1228283
  • 博文数量: 699
  • 博客积分: 6000
  • 博客等级: 准将
  • 技术积分: 4970
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-15 13:45
文章分类

全部博文(699)

文章存档

2011年(1)

2008年(698)

我的朋友

分类:

2008-10-15 13:45:33

 /*********************************************
*程序:  求最大的排列相同数                  *
*作者:  flyli(programfan(asoka))            *
*版本: 数据结构题目            *
*程序说明:目的是求出两个字串符的最大排列相 *
*          同数 ,比如abfced和axdfmbe的最大排 *
*          列相同数就是3(ade),当然ad也是排列 *
*         相同数,但是不是最大的            *
*********************************************/

# include
using namespace std;

/**************************************
*建立一个类,作用是求出最大排列相同数 *
**************************************/
class SameString
{
public:
       SameString(char*,char*);  //构造函数
       int SS_MaxString(void);
       void text();              //为了初始化两个内部成员的函数
private:
       int SS_ALength;
       int SS_BLength;             //2个字串符的长度
       char* SS_StringA;
       char* SS_StringB;           //2个字串符的地址
       int SS_MaxString(int,int);  //求出最大排列数的函数
       int SS_max(int,int);         //求出2个数中较大的那个
       int SS_length(char *);      //量一个字串符长度的函数

};
/**********************************
*构造函数,接受2个字串符的首地址  *
**********************************/
SameString::SameString(char* m,char* n)
{
    SS_StringA = m;
    SS_StringB = n;
}
/*********************************
*     次类的外部接口函数         *
*     可以用来初始2个成员        *
*     和打开程序的核心函数       *
*********************************/
int SameString::SS_MaxString(void)
{
    SS_ALength = SS_length(SS_StringA);
    SS_BLength = SS_length(SS_StringB);
    SS_MaxString(SS_ALength,SS_BLength);
}
/***********************************
*核心函数,接受2个字串符还没有处理 *
*的字符的个数                      *
***********************************/
int SameString::SS_MaxString(int m,int n)
{
    if(m == 0||n == 0)return 0;
    else if(*(SS_StringA+m-1)==*(SS_StringB+n-1))return SS_MaxString(m-1,n-1)+1;
    else return SS_max(m,n);
}
/**********************************
*一个简单的求最大值的函数,返回较 *
*大的那个值                       *
**********************************/
int SameString::SS_max(int m,int n)
{
    if(m == 0||n == 0)return 0;
    int a = SS_MaxString(m-1,n);
    int b = SS_MaxString(m,n-1);
    if(a>b)return a;
    else return b;
}
/*********************************
*通过一个字串符的首地址算出它的字*
*符个数                          *
*********************************/
int SameString::SS_length(char *m)
{
   char *p = m;
   int i = 0;
   while(*p!='\0')
   {
       p++;
       i++;
   }
   return i;
}

/***********************************
* 这就是用来这个类的主函数了  *
***********************************/
int main(void)
{
    char m[]="aabcdefghij";
    char n[]="acbcdea";
    int i;
    SameString a(m,n);
    i=a.SS_MaxString();
    cout<    system("pause");
    return 0;
}


--------------------next---------------------

阅读(318) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~