Нахождения минимума.

Ответить
Kia
Сообщения: 1
Зарегистрирован: 25 мар 2010, 00:23
Контактная информация:

Приветствую всех! Прошу помочь с программой на C++, если несложно. Задача состоит в следующем. Дан ряд чисел и необходимо найти то число, которые повторяется в ряду во второй раз быстрее остальных. Т.е. например:
1234516768...
В данном ряду повторяются две цифры: 1 и 6. Но правильным ответом будет цифра 6, т.к. она повторяется быстрее, чем 1. (также необходимо учитывать, что число может повториться и в третий, и в четвертый раз, но нам нужно только то число, которое повторяется быстрее во второй раз).
Надеюсь, у меня получилось объяснить смысл задачи. =)
Получение чисел из текстового файла и т.д. (одно из условий задачи) я сделал. В принципе меня интересует только код нахождения числа. Сам я пока только смог написать цикл нахождения повторяющихся чисел в векторе. Вот код:

Код: Выделить всё

int keres (vector <int> &t, int &n)
{

    int i=0;
    for (int i=0; i<n; i++)
    {
        for (int j=0; j<i; j++)
        {
            if (t[i]==t[j])
            {
                cout<< t[i]<<endl;
            }
       }
    }
}
А вот как сделать, чтобы программа выдавала именно то число, что повторяется быстрее остальных - не знаю.
Надеюсь, кто-нибудь сможет помочь. Заранее спасибо! =)
Аватара пользователя
rrrFer
Сообщения: 237
Зарегистрирован: 07 сен 2008, 14:15
Контактная информация:

Код: Выделить всё

	int a[]={1,2,3,4,5,1,2,7,6,8},n=10,
		minn,minv,tn,fl,fl1,i,j;
	for(i=fl=0;i<10;i++)
		for(j=fl1=0;j<n;j++)
			if(i==a[j])
				if(fl1){
					if(!fl){
						minn=j-tn;
						minv=i;
					}
					else{
						if(minn>j-tn){
							minn=j-tn;
							minv=i;
							break;
						}
					}
				}
				else{
					tn=j;
					fl1=1;
				}
	cout<<minv<<endl;
Приглашаю на свой блог о программировании: pro-prof.com
Ответить