三道编程题都很简单,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) 回帖