請寫一個程式將一個正整數數列中最長的相同正整數數列輸出,負數代表輸入結束
例如:
輸入: 1 2 2 3 3 3 5 9 9 -1 例如:
輸出: 3 3 3
#include <iostream>
using namespace std;
int main()
{
int i,n,t,k,a,b,c,x,y;
cin >> i;
a = i;
x = 0;
t = 1;
while (i > 0)
{
cin >> i;
if (i == a)
{
b = a; //新相同數列
t++; //計算個數
y = t; //新長度
if (x > n)
{
n = x; //舊跟前比大小
}
if (y > n)
{
k = y; //max
}
if (y < n)
{
b = c; //換成舊數
k = n;
}
}
if (b != c)
{
n = t; //儲存舊長度
}
if ((i != a) && i > 0)
{
a = i; //new
c = b; //保留前數
x = t; //保留前長度
t = 1; //歸1
}
}
for (int j = 0;j < k; j++) //k可轉成輸出長度
{
if (j > 0)
cout << " ";
cout << b;
}
return 0;
}
沒有留言:
張貼留言