1、有3个字母a,b,c:你输入一个数字,要输出所有的组合字符和组合数
举例:输入1 输出a,b,c 3
输入2 输出aa,ab,ac,ba,bb,bc,ca,cb,cc 9
2、求字符串1与字符串2的最大公共子串的长度及此长度最大公共子串的个数。
输入 abcdefg (最大公共子串:bcd)
Eebcdfg
输出 3 1
输入 abcdefg (最大公共子串为:abcd defg)
abcddefg
输出 4 2
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int count(string a,string b)
{
int num=0;
for(int i=0;i<b.length();i++)
for(int j=i+1;j<=b.length();j++)
{
string temp=b.substr(i,j-i);
if(temp==a)
num++;
}
return num;
}
int main()
{
string a,b;
int count_num=0;
int max_len=0;
cin>>a>>b;
for(int i=0;i<a.length();i++)
for(int j=i+1;j<=a.length();j++)
{
string temp=a.substr(i,j-i);
int lenn=j-i;
int num=count(temp,b);
if(num==0)
continue;
if(lenn>max_len)
{
max_len=lenn;
count_num=1;
}
else if(lenn==max_len)
{
count_num++;
cout<<count_num<<endl;
}
}
cout<<max_len<<" "<<count_num<<endl;
}