2018年5月13日 星期日

C++取最長相同數列

請寫一個程式將一個正整數數列中最長的相同正整數數列輸出,負數代表輸入結束       
例如:
輸入: 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;
}

沒有留言:

張貼留言