//滴滴第一题 X前后分别找相同的字符的个数, 第一个答案是个数+1,第二个答案是n-个数 #include<iostream> #include<string> #include<vector> #include<algorithm> #include<string.h> using namespace std; int main() { int n; cin>>n; char* a=new char[n]; char* b=new char[n]; for(int i=0;i<n;i++) cin>>a[i]; for(int i=0;i<n;i++) cin>>b[i]; int tmpA[26]; int tmpB[26]; memset(tmpA,0,sizeof(tmpA)); memset(tmpB,0,sizeof(tmpB)); int i=0; while(a[i]!='X' && i<n) { tmpA[a[i]-'A']++; i++; } i++; while(i<n) { tmpB[a[i]-'A']++; i++; } int j=0; while(b[j]!='X' && j<n) { tmpA[b[j]-'A']++; j++; } j++; while(j<n) { tmpB[b[j]-'A']++; j++; } int zuihao=0; int zuihuai=0; for(int i=0;i<26;i++) { //cout<<tmpA[i]<<" "; if(tmpA[i]==2) zuihao++; } // cout<<endl; for(int i=0;i<26;i++) { //cout<<tmpB[i]<<" "; if(tmpB[i]==2) zuihuai++; } // cout<<endl; cout<<zuihao+1<<" "<<n-zuihuai<<endl; return 0; }
第二题 斐波那契蛇 AC 剑指offer面试题29,牛客上更清晰明了的写法,就是我这个 先列出来,在填进去,再输出 #include<iostream> #include<string> #include<vector> #include<algorithm> using namespace std; long long a[81+1]; void func() { a[0]=1; a[1]=1; for(int i=2;i<81;i++) { a[i]=a[i-1]+a[i-2]; } } int main() { func(); /* for(int i=0;i<81;i++) cout<<a[i]<<" "; cout<<endl; */ int n; cin>>n; long long **ans=new long long*[n]; for(int i=0;i<n;i++) { ans[i]=new long long[n]; } int up=0; int down=n-1; int left=0; int right=n-1; int i,j; int k=n*2-1; while(true) { for(i=left;i<=right;i++) ans[up][i]=a[k--]; up++; if(up>down) break; for(j=up;j<=down;j++) ans[j][right]=a[k--]; right--; if(right<left) break; for(i=right;i>=left;i--) ans[down][i]=a[k--]; down--; if(down<up) break; for(j=down;j>=up;j--) ans[j][left]=a[k--]; left++; if(left>right) break; } for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { cout<<ans[i][j]<<" "; } cout<<endl; } return 0; }
全部评论
(0) 回帖