0
已解决
王光裕
资深光能
资深光能
#include<iostream> using namespace std; int main () { long n,h=1,zs=1,j; cin>>n; char a[101]; char zf=a[0]; for (int i=0; i<n; i++) cin>>a[i]; for (j=0; j<n-1; j++) { if (a[j]==a[j+1]) h++; else if (h>zs) { zs=h; zf=a[j]; h=1; } } if(a[j]==a[n]) h++; else if (h>zs) { zs=h; zf=a[j]; h=1; } cout<<zs<<endl; cout<<zf<<endl; return 0; }
0
已采纳
陆姗姗
资深守护
资深守护
第一点:你的两段elseif的代码部分不对,其他都没问题
else if (h>zs) { zs=h; zf=a[j]; h=1; }
如果这样子写elseif的话是只有当a[j]!=a[j+1]并且h>zs的时候h才被赋值为1,但实际上只要a[j]!=a[j+1]时就需要h=1;
所以无论h>zs是否成立的时候h=1的步骤都是要的
第二点:
for (j=0; j<n-1; j++) { if (a[j]==a[j+1]) h++; else if (h>zs) { zs=h; zf=a[j]; h=1; } } if(a[j]==a[n]) h++; else if (h>zs) { zs=h; zf=a[j]; h=1; }
这部分的代码可以简化一下,a[n]不需要单独拿出来比较,直接在for循环里把j的范围改成j<=n-1就可以
0
芮奥运
高级光能
高级光能
int n,h=1,zs=1; cin>>n; char a[255]; char zf=a[0]; for (int i=0; i<n; i++) { cin>>a[i]; } for (int i=0; i<n+1; i++) { if (a[i]==a[i+1]) { h++; if (h>zs) { zs=h; zf=a[i]; } } else h=1; } cout<<zs<<endl; cout<<zf<<endl;
0
0
时梓繁
修练者
修练者
int n,h=1,zs=1; cin>>n; char a[255]; char zf=a[0]; for (int i=0; i<n; i++) { cin>>a[i]; } for (int i=0; i<n+1; i++) { if (a[i]==a[i+1]) { h++; if (h>zs) { zs=h; zf=a[i]; } } else h=1; } cout<<zs<<endl; cout<<zf<<endl; return 0; }
头文件
#include<iostream> #include<cstdio> #include<cstring> #include<string> #include<cmath> #include<algorithm>
0