これは私のコードです " a a a bb bb bc sa sa a a
" のように一度に同じ長さの文字の最大長を見つけようとしているので、答えは一度に 2 文字で 5 回、隣接して 5 です。
これは私のコードです。私の質問は、入力を取得しようとしているときに、最初の入力では行を取得するのではなく、最後の行で printf を実行し、行を取得して出力を出力することです。
たとえば、5 を指定すると 1 が書き込まれ、次に getline が必要ですが、printf ではなく getline を最初に取得したいのですが、このようにして、5 つの入力に対して 1 と 4 つの必要な出力が出力されます。5 が必要な理由を教えてください。 .
#include<iostream>
#include<cstdio>
#include<vector>
using namespace std;
int main()
{
int a,j;
scanf("%d",&a);
for(j=0;j<a;j++)
{
vector<int> v;
string s;
getline(cin,s);
int i,cnt =0;
for(i=0;i<s.length();i++)
{
if(s[i] != ' ')
{
cnt++;
}
else
{
v.push_back(cnt);
cnt =0;
}
}
v.push_back(cnt);
int k=0;
int ps =0;
int sp=0;
while(k<v.size()-1)
{
if (v[k+1] - v[k] == 0)
{
sp++;
k++;
}
else
if (sp >= ps)
{
ps = sp;
k++;
sp=0;
}
else
{
k++;
sp=0;
}
}
if (sp<ps)
printf("%d",ps+1);
else
printf("%d",sp+1);
}
return 0;
}