本大周学习了递归和高精。又进行了考试,结果爆零了,总结后是自己没掌握。还是看题吧!
第一题大意:给两个字符串,找出重叠字符输出对数并排列。题看了很久才明白意思,前面几问的思路是有的,可排列函数sort的用法却忘了,想了许久,还是先敲代码为上。最初代码如下:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int sum=0;
string a,b,c;
cin>>a>>b;
for(int i=0;i<=a.size();i++)
{
for(int j=0;j<=b.size();j++)
if(a[i]==b[j])
sum++;
}
if(sum-1==1)
{
cout<<"**"<<endl;
cout<<c<<endl;
}
if(sum-1<=0)
cout<<"*"<<endl;
else
{
cout<<"***"<<endl;
cout<<sum-1<<endl;
}
return 0;
}
敲到这时,知道应在sum++;后用sort语句排列;在cout<<sum<<endl;后适当输出。可忘了sort语句的格式,便炸了。后来,经过复习,修改后如下:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int sum=0;
string a,b,c[257];
cin>>a>>b;
for(int i=0;i<=a.size();i++)
{
for(int j=0;j<=b.size();j++)
if(a[i]==b[j])
{
sum++;
c[sum]=a[i];
}
}
if(sum-1==1)
{
cout<<"**"<<endl;
cout<<c[sum-1]<<endl;
}
if(sum-1<=0)
cout<<"*"<<endl;
else
{
cout<<"***"<<endl;
cout<<sum-1<<endl;
sort(c,c+sum-1);
for(int i=1;i<=sum-1;i++)
{
if(i==1)
cout<<c[i];
else
cout<<'-'<<c[i];
}
}
return 0;
}
看最后一道大意:根据规律判断字符串一位上的字符,字符串如下:moo mooo moo moooo moo mooo moo mooooo……;
这时典型的递归题,可我递归式出错了,于是炸了。递归式如下:s(n)=s(n-1)+“moo…o(n+2个零)”+s(n-1)。
套用此式,才过了。
还有两题是字符串和递归。程序下次补上……bye!