Member 13921117 Ответов: 3

Как мне получить код для вопросов кодирования киосков и купенов (tcs digital advanced coding questions)?


какова логика кодирования этого вопроса ? там есть n магазинов, каждый магазин даст купен с некоторым номером на нем. если вы берете купен из магазина, то вы не можете взять купен из следующих k магазинов. в конце концов вы должны обладать максимальным количеством купенов.
Входные данные:- n(нет магазинов) k(магазины пропустить)
(Значения coupen вы получаете в магазине соответственно)
Выход:- сумма(макс. собранных купенов)

Входной сигнал образца
10 2
120
3
7
9
150
0
7
10
6
Ответ 120+150+10

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

Я пытался найти логику, но безуспешно

3 Ответов

Рейтинг:
1

OriginalGriff

Начните с чтения входных данных и запоминания их.
Затем обработайте ввод повторно, пробуя каждую комбинацию.
Например, если вы берете первый купон магазинов, то вы не можете взять купон из следующих двух, но вы можете взять четвертый купон магазинов, если хотите - 7. Если вы это сделаете, то у вас будет всего 2 купона. Таким образом, одна комбинация равна 0, 3 (потому что индексы начинаются с нуля)
Если вы не возьмете четвертый купон магазина, вы можете взять пятый: 9
Таким образом, вы будете в конечном итоге с комбинациями

0, 3
0, 4
0, 5
0, 6, 7
0, 6, 8
0, 6, 9
1
2, 6, 7
2, 6, 8
2, 6, 9
...
Ваша задача-выяснить, какой может быть самая длинная такая комбинация: 3 в данном случае.

Это подход "грубой силы и невежества" - и хотя он будет работать, он не будет особенно эффективным, особенно для больших наборов данных. Возможно, ваш тест потребует лучшего подхода, такого как взвешенный график: Проблема самого длинного пути - Википедия[^] но это будет намного сложнее реализовать.

В любом случае, вы не получите никакого кода: это проверка ваших способностей, а не mone!


Рейтинг:
1

Patrice T

Цитата:
Как мне получить код для вопросов кодирования киосков и купенов (tcs digital advanced coding questions)?

Прежде всего, в такого рода задачах, каждое слово имеет значение Таким образом, это хорошая идея, чтобы дать точную формулировку и/или ссылку на оригинальную веб-страницу .
Цитата:
Я пытался найти логику, но безуспешно

Это задача, поставленная перед вами самим. Ваша цель-выяснить, можете ли вы решить проблему или нет. Поскольку вы не решили задачу, это означает, что вам нужно оттачивать свои убийства. Изучение структур данных и алгоритмов-хорошее начало, Пошаговое уточнение-тоже хорошая идея.
Структурного Программирования.формат PDF[^]
Цитата:
Я пытался найти логику, но безуспешно

Возьмите лист бумаги и карандаш и попробуйте решить задачу вручную, без компьютера. Решите другие наборы данных. Сделайте это алгоритмом.
Более или менее вы должны проверить все комбинации магазинов и сохранить лучший результат.

[Обновление]
Код, который вы разместили в решении 3, неверен:
- первая причина, ты никогда не сбрасываешься curr_val до 0 при тестировании различных путей.
- "я не смог заставить его выйти за пределы 10" - это также признак того, что код неверен.


Рейтинг:
0

Member 13921555

ну,когда я писал тест,даже я не мог понять этого,но после возвращения домой, когда я попробовал, это сработало здесь решение:

#include <stdio.h>

int main(void) {
	int n,k,arr[20],i,j,curr_val=0,max_val=0,l,c;
	scanf("%d,%d",&n,&k);
for(i=0;i<n;i++){
    scanf("%d",&arr[i]);
}
j=0;
while(j<n){
    l=0;
while(l<n){
    c=0;
for(i=j;i<n;){
    ++c;
    if(c==1){
 if(j-k-1>0)
     curr_val+=arr[j-k-1];
    }
 curr_val+=arr[i];
if(i==j)
 i+=l+k+1;
 else
 i+=k+1;
}
if(curr_val>max_val){
    max_val=curr_val;
}
curr_val=0;
l++;
}
j++;
}
printf("%d",max_val);
	return 0;
}

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


Patrice T

это ваше решение или ваша работа до сих пор ?