Prateek Krishna Ответов: 2

Результат получается неправильным ответом для какого-то другого тестового случая.


You are given a sorted sequence of n integers S = s1, s2, ..., sn and a sorted sequence of m integers Q = q1, q2, ..., qm. Please, print in the ascending order all such si that belongs to Q. 


Что я уже пробовал:

#include <iostream>
using namespace std;

int main() {
	int n,m,i,j,a[101],b[101],ctr=0,c[100];
	cin>>n;
	for(i=0;i<n;i++)
	cin>>a[i];
	cin>>m;
	for(i=0;i<m;i++)
	cin>>b[i];
	for(i=0;i<n;i++)
	{
	    for(j=1;j<m;j++)
	    {
	        if(a[i]==b[j])
	        {
	            c[ctr]=a[i];
	            ctr++;
	        }
	    }
	}
	for(i=0;i<ctr;i++)
	{
	cout<<c[i];
	}
	return 0;
}

Patrice T

А,у вас есть вопрос или проблема ?

Prateek Krishna

вопрос..

OriginalGriff

И в чем же заключается ваш вопрос?

Prateek Krishna

при запуске программы в результате получается неправильный ответ

Patrice T

Приведите пример ввода/фактического вывода/ ожидаемого вывода

2 Ответов

Рейтинг:
2

Richard MacCutchan

FOR each number in si
    FOR each number in Q
        IF the number in si equals the number in Q
        BEGIN
            PRINT the number
            BREAK from the inner loop
        END
    END FOR
END FOR


Рейтинг:
18

KarstenK

Сделайте еще несколько выходных данных на экране для всех взаимодействий и сравнений. Ваш алгоритм не является оптимальным, потому что ваши два массива отсортированы, поэтому вам не нужно начинать с индекса 0, но последний используется.

Для лучшей читабельности я бы использовал S и Q для имен массивов.

Почему начинается с 1? Напишите несколько тестовых функций, которые заполняют данные для вас, и научитесь использовать отладчик.