pkpawan123 Ответов: 2

Правильно ли я подхожу к этому вопросу?


https://www.codechef.com/OCT19B/problems/S10E[^]
question is above from given information i have tried my best can you check the code and suggest me what's wrong in it .i am getting right output on other compiler but on submission it is showing wrong answer . 


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

#include<iostream>
#include<algorithm>
using namespace std;

#include<stdio.h>

int main()
{ int t,n[10],i,j,k,A[10000],D[10];
 cin>>t;

for(i=0;i<t;++i)
{ D[i]=0;
int Z[100];
	
	cin>>n[i];
	
	for(j=0;j<n[i];++j)
	{
		cin>>A[j];
	}
	
	for(k=0;k<n[i];++k)  //copying array
	{
		Z[k]=A[k];
	}
	
	
	
	for(j=0;j<n[i];++j)
	{
		if(350<=A[j]&&A[j]<=750)
		{
			if(j<5)
			   { if(j==0||A[0]>A[j])
			       {
				      D[i]++;
			       }
				
			    }
			else
			   {   
			       sort(A+(j-5),A+j+1);
			        if(Z[j]==A[j-5])
			       {
			        	D[i]++;
			        }
				
			   }
		}
	}
	
 }
  for(i=0;i<t;++i)
  {
  	cout<<D[i]<<"\n";
  }
	
	return 0;
}

2 Ответов

Рейтинг:
2

Patrice T

Цитата:
Правильно ли я подхожу к этому вопросу?

Нет, это не так.
sort(A+(j-5),A+j+1);
 if(Z[j]==A[j-5])

Вы сортируете часть массива, которая позволяет вам гарантировать, что ни один предыдущий 5 дней не будет ниже сегодняшней цены.
Вы сохраняете 4 теста, но сортировка стоит гораздо больше, чем сохраненные тесты.
Вторичный эффект, сортировка-это изменение цен предыдущих дней.

Вы должны переосмыслить все это.
-----
Научитесь правильно делать отступы в вашем коде, это покажет его структуру, и это поможет чтению и пониманию. Это также помогает выявлять структурные ошибки.
#include<iostream>
#include<algorithm>
using namespace std;

#include<stdio.h>

int main()
{
    int t,n[10],i,j,k,A[10000],D[10];
    cin>>t;

    for(i=0;i<t;++i)
    {
        D[i]=0;
        int Z[100];

        cin>>n[i];

        for(j=0;j<n[i];++j)
        {
            cin>>A[j];
        }

        for(k=0;k<n[i];++k)  //copying array
        {
            Z[k]=A[k];
        }

        for(j=0;j<n[i];++j)
        {
            if(350<=A[j]&&A[j]<=750)
            {
                if(j<5)
                {
                    if(j==0||A[0]>A[j])
                    {
                        D[i]++;
                    }

                }
                else
                {
                    sort(A+(j-5),A+j+1);
                    if(Z[j]==A[j-5])
                    {
                        D[i]++;
                    }

                }
            }
        }

    }
    for(i=0;i<t;++i)
    {
        cout<<D[i]<<"\n";
    }

    return 0;
}

Стиль отступа - Википедия[^]

Профессиональные редакторы программистов имеют эту функцию и другие, такие как сопоставление скобок и подсветка синтаксиса.
Блокнот++ Главная Страница[^]
личные[^]

[Обновление]
Цитата:
сэр можете ли вы дать некоторые примеры ввода программы и ожидаемого результата

Не хочу показаться грубым, но это также ваша работа-Создавать примеры входных данных для проверки правильности вашего кода.
750 700 650 600 550
750 350 400 450 500
Цитата:
я понял вашу точку зрения, сэр . значит, я должен использовать вложенный цикл for для сравнения ?

В принципе, да


[no name]

сэр, если какой-либо день из предыдущих 5 дней имеет меньшее значение, чем сегодня, то он не будет удовлетворять этому кодированию if(Z[j]==A[j-5]) . мой подход состоял в том, что я скопировал исходный массив в Z, а затем после того, как я копирую, и это будет верно только в том случае, если сегодняшняя цена ниже, чем цены в последние 5 дней

Patrice T

Как только вы отсортировали первый кусочек а, вы не возвращаетесь к исходному порядку на следующий день, чтобы проверить его.
Таким образом, проблему.

[no name]

сэр, не могли бы вы привести пример ввода программы и ожидаемого результата @Patrice T

[no name]

я понял вашу точку зрения, сэр . значит, я должен использовать вложенный цикл for для сравнения ?

Рейтинг:
0

KarstenK

Вам нужно научиться пользоваться отладчиком. Установите Visual Studio и прочитайте некоторые из них Учебник по C++ чтобы лучше понимать язык и инструменты.

совет: напишите некоторый тестовый код с входными данными и сравните результаты.


[no name]

по моему мнению, я получаю правильные ответы на ввод, но я хочу перепроверить .сэр, если вы можете предоставить образец ввода с выводом, то я получу представление о том, насколько корректен мой код .
меня смущает эта часть вопроса: "каждый день шеф-повар считает цену телефона хорошей, если она строго меньше всех цен, которые он наблюдал в течение предыдущих пяти дней. Если нет записи цены на некоторые из предыдущих пяти дней (потому что шеф ― повар еще не начал проверять цену в этот день), то шеф-повар просто игнорирует этот предыдущий день-мы могли бы сказать, что он считает цену в этот день бесконечной." можете ли вы объяснить вкратце