【编译原理练习题】由字母表求字符串个数

来源:互联网 发布:php memcache set参数 编辑:程序博客网 时间:2024/05/16 00:51

1. 字母表∑为  {ab c} ,请列出所有长度小于5 的字符串及个数。

2. 若字母表中字符个数为m(m>=1),具体字符通过输入确定,请列出长度小于n的字符串及个数。

每次都把a b c分别加在首位,即循环字母表

#include<cstdio>#include<iostream>#include<algorithm>#include<string>using namespace std;int main(){string s[1000];s[0]="a";s[1]="b";s[2]="c";int t=2,n=2,k=0;for(int h=1;h<4;h++){for(int i=0;i<3;i++){for(int j=k;j<=n;j++){s[++t]=s[i]+s[j];}}k=n+1;//记录本组开始位置 n=t;//记录本组结束时位置}for(int i=0;i<=t;i++)    cout<<s[i]<<" ";    cout<<endl;    cout<<"字符串个数:"<<t+1<<endl;return 0;} 


#include<cstdio>#include<iostream>#include<algorithm>#include<string>using namespace std;string s[1000];int result(int m,int l){int t=2,n=2,k=0;for(int h=1;h<l-1;h++){for(int i=0;i<m;i++){for(int j=k;j<=n;j++){s[++t]=s[i]+s[j];}}k=n+1;//记录本组开始位置 n=t;//记录本组结束时位置}return t;} int main(){int m,l;cin>>m>>l;string ss;cin>>ss;//输入字符集 for(int i=0;i<m;i++)s[i]=ss[i];int num=result(m,l);for(int i=0;i<=num;i++)    cout<<s[i]<<" ";    cout<<endl;    cout<<"字符串个数:"<<num+1<<endl;return 0;} 




阅读全文
0 0
原创粉丝点击