三道编程题都很简单,40分钟AC
第一道 求能组成两个字符串的最大子串
#include <iostream>
using namespace std;
int main()
{
string str1,str2;
cin>>str1>>str2;
int n=str1.size();
int m=str2.size();
string res="";
for(int j=1;j<=n && j<=m;j++)
{
string temp=str1.substr(0,j);
if(str2.substr(0,j) != temp)
{
res="";
break;
}
int k;
for(k=j;k<n;k+=j)
{
if(temp!=str1.substr(k,j))
break;
}
if(k<n)
continue;
for(k=j;k<m;k+=j)
{
if(temp!=str2.substr(k,j))
break;
}
if(k<m)
continue;
res=temp;
}
cout<<res;
return 0;
}
第二道:矩阵规律输出
#include <iostream>
using namespace std;
int main()
{
int n,m;
cin>>n>>m;
int** mat=new int*[n];
for(int i=0;i<n;i++)
mat[i]=new int[m];
int mask=1;
for(int i=0;i<n;i++)
{
int x=i,y=0;
while(x>=0 && y<m)
mat[x--][y++]=mask,mask++;
}
for(int j=1;j<m;j++)
{
int x=n-1,y=j;
while(x>=0 && y<m)
mat[x--][y++]=mask,mask++;
}
cout<<"[";
for(int i=0;i<n;i++)
{
if(i!=0)
cout<<",";
cout<<"[";
for(int j=0;j<m-1;j++)
cout<<mat[i][j]<<",";
cout<<mat[i][m-1]<<"]";
}
cout<<"]";
return 0;
}
第三道:字符串压缩
#include <iostream>
using namespace std;
int main()
{
string str;
cin>>str;
int n=str.size();
for(int i=0;i<n;i+=5)
{
int result=0;
for(int j=i;j<n && j<i+5;j++)
{
result=result<<6;
if(str[j]>='a' && str[j]<='z')
result+=str[j]-'a'+1;
else if (str[j]>='A' && str[j]<='Z')
result+=str[j]-'A'+27;
else if (str[j]>='0' && str[j]<='9')
result+=str[j]-'0'+53;
}
if(i==0)
cout<<result;
else
cout<<" "<<result;
}
cout<<endl;
return 0;
}


全部评论
(2) 回帖