Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
Alisia
0 / 0 / 0
Регистрация: 05.11.2011
Сообщений: 23
1

Спрашивается, каков будет счет в конце игры, если оба игрока действуют оптимально.

05.11.2011, 15:40. Просмотров 2033. Ответов 30
Метки нет (Все метки)

Помогите пожалуйста написать 2 задачи, ребят (( Спасибо вам большое. Нужно завтра сдать, помгите пожалуйста. Буду очень признательна вам

1.Имеется n монет, разложеных на столе в один ряд. Известно достоинство каждой из монет. Два игрока по очереди берут монеты. За один ход разрешается взять крайнюю слева монету, либо крайнюю справа. Выигрывает тот, у кого в конце игры будет больше денег. Спрашивается, каков будет счет в конце игры, если оба игрока действуют оптимально. Счетом называется разность между суммой денег, набранной первым игроком и суммой денег, набранной вторым.

Входные данные
В первой строке находится натуральное число n (1 <= n <= 1000). В следующей строке находится n натуральных чисел, не превосходящих 10^6 - достоинства монет.

Выходные данные
Выведите единственное число - искомый счет.

Пример

Ввод
4
5 6 3 4


Вывод
2


2.На флаге имеется n разноцветных полос (1 <= n <= 1000). Цвета на различных полосах могут быть одинаковыми. Известно, что общее количество цветов на флаге не более m (1 <= m <= 100). Некоторые цвета не сочетаются друг с другом, и поэтому соседние полосы флага не могут быть раскрашены в такую пару цветов. Вам дан список таких пар. Найдите количество способов раскраски флага . На флаге не обязательно использование всех n цветов, но каждая полоса должна быть покрашена в какой-либо цвет.

Входные данные
В первой строке содержаться три натуральных числа: n, m и k, где k - количество пар не сочетающихся друг с другом цветов. В следующих k строках записано по два натуральных числа, не превосходящие n - номера цветов, которые в раскраске флага не могут находиться на соседних полосах. Каждая пара указана во входном файле не более одного раза.

Выходные данные
Выведите одно число - искомое количество способов по модулю 98759873.

Пример

Ввод
3 3 3
1 2
3 3
1 3

Вывод
6

Разъяснение
Все возможные покраски:
1 1 1
2 2 2
2 2 3
2 3 2
3 2 2
3 2 3

Cпасибо вам большое, если поможете!
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.11.2011, 15:40
Ответы с готовыми решениями:

Зная квалификацию игроков определить общее число подтягиваний, которое совершат оба игрока за время игры
Пусть квалификация первого игрока равна A, а квалификация второго равна B....

Каков будет ток в конце десятой секунды, если в начале опыта был 16 и 2/3 А?
Нужна помощь в решении задачи! &quot;Разность потенциалов на зажимах катушки...

Что будет выводить puts, если в конце строки не будет нулевого байта
что будет выводить puts, если в конце строки не будет нулевого байта

Каков шанс получить пожар в квартире если будет у меня системника работать сутками?
Сорри не знал куда написать, но напишу сюда. Если что не так заранее извиняюсь...

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

30
Montanaa
5 / 5 / 2
Регистрация: 21.03.2011
Сообщений: 79
07.11.2011, 08:58 21
Цитата Сообщение от valeriikozlov Посмотреть сообщение
2-ая. Проверяйте:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include "stdio.h"
int main()
{
 
    int n, m , k, mas_res[100][1000], i, j, mod=98759873, res=0, y;
    bool sm[100][100];
    for(i=0; i<100; i++)
    {
        for(j=0; j<100; j++)
            sm[i][j]=false;
        for(j=0; j<1000; j++)
            mas_res[i][j]=0;
    }
    scanf("%d %d %d", &n, &m, &k);
    while(k>0)
    {
        scanf("%d %d", &i, &j);
        sm[i-1][j-1]=sm[j-1][i-1]=true;
        k--;
    }
    for(i=0; i<n; i++)
        mas_res[i][0]=1;
    for(i=1; i<m; i++)
    {
        for(j=0; j<n; j++)
            for(y=0; y<n; y++)
                if(!sm[j][y])
                    mas_res[y][i]+=mas_res[j][i-1];
        for(j=0; j<n; j++)
            mas_res[j][i]%=mod;
    }
    for(i=0; i<n; i++)
        res+=mas_res[i][m-1];
    printf("%d", res%mod);  
    return 0;
}
да и тут он должен выходить за границцы массива. я не прав?
0
Alisia
0 / 0 / 0
Регистрация: 05.11.2011
Сообщений: 23
07.11.2011, 14:47  [ТС] 22
Цитата Сообщение от Montanaa Посмотреть сообщение
да и тут он должен выходить за границцы массива. я не прав?
не должен
0
Montanaa
5 / 5 / 2
Регистрация: 21.03.2011
Сообщений: 79
07.11.2011, 17:43 23
Цитата Сообщение от Alisia Посмотреть сообщение
не должен
поясните
0
valeriikozlov
Эксперт С++
4687 / 2513 / 751
Регистрация: 18.08.2009
Сообщений: 4,550
07.11.2011, 17:49 24
Цитата Сообщение от Alisia Посмотреть сообщение
вроде бы не верные результаты
на чем основан вывод?
0
Alisia
0 / 0 / 0
Регистрация: 05.11.2011
Сообщений: 23
07.11.2011, 17:52  [ТС] 25
Цитата Сообщение от valeriikozlov Посмотреть сообщение
на чем основан вывод?
на тестах
0
valeriikozlov
Эксперт С++
4687 / 2513 / 751
Регистрация: 18.08.2009
Сообщений: 4,550
07.11.2011, 18:32 26
Цитата Сообщение от Alisia Посмотреть сообщение
на тестах
есть какой-нибудь тест из не пройденных?

Добавлено через 19 минут
Долго нет ответа (а зря, быстрее получилось бы найти ошибку). Вот так пробуйте:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include "stdio.h"
int main()
{
 
        int n, m , k, mas_res[100][1000], i, j, mod=98759873, res=0, y;
        bool sm[100][100];
        for(i=0; i<100; i++)
        {
                for(j=0; j<100; j++)
                        sm[i][j]=false;
                for(j=0; j<1000; j++)
                        mas_res[i][j]=0;
        }
        scanf("%d %d %d", &n, &m, &k);
        while(k>0)
        {
                scanf("%d %d", &i, &j);
                sm[i-1][j-1]=sm[j-1][i-1]=true;
                k--;
        }
        for(i=0; i<n; i++)
                mas_res[i][0]=1;
        for(i=1; i<m; i++)
        {
                for(j=0; j<n; j++)
                        for(y=0; y<n; y++)
                                if(!sm[j][y])
                                {
                                        mas_res[y][i]+=mas_res[j][i-1];
                                        mas_res[y][i]%=mod;
                                }
        }
for(i=0; i<n; i++)
{
 res+=mas_res[i][m-1];
 res%=mod;
}
 printf("%d", res); 
 return 0;   
}
0
Montanaa
5 / 5 / 2
Регистрация: 21.03.2011
Сообщений: 79
07.11.2011, 19:40 27
Цитата Сообщение от valeriikozlov Посмотреть сообщение
есть какой-нибудь тест из не пройденных?

Добавлено через 19 минут
Долго нет ответа (а зря, быстрее получилось бы найти ошибку). Вот так пробуйте:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include "stdio.h"
int main()
{
 
        int n, m , k, mas_res[100][1000], i, j, mod=98759873, res=0, y;
        bool sm[100][100];
        for(i=0; i<100; i++)
        {
                for(j=0; j<100; j++)
                        sm[i][j]=false;
                for(j=0; j<1000; j++)
                        mas_res[i][j]=0;
        }
        scanf("%d %d %d", &n, &m, &k);
        while(k>0)
        {
                scanf("%d %d", &i, &j);
                sm[i-1][j-1]=sm[j-1][i-1]=true;
                k--;
        }
        for(i=0; i<n; i++)
                mas_res[i][0]=1;
        for(i=1; i<m; i++)
        {
                for(j=0; j<n; j++)
                        for(y=0; y<n; y++)
                                if(!sm[j][y])
                                {
                                        mas_res[y][i]+=mas_res[j][i-1];
                                        mas_res[y][i]%=mod;
                                }
        }
for(i=0; i<n; i++)
{
 res+=mas_res[i][m-1];
 res%=mod;
}
 printf("%d", res); 
 return 0;   
}
а, ошибся.
0
valeriikozlov
Эксперт С++
4687 / 2513 / 751
Регистрация: 18.08.2009
Сообщений: 4,550
07.11.2011, 19:50 28
Цитата Сообщение от Montanaa Посмотреть сообщение
А тут разве не нужно каждый раз считать по модулю? с заданным числом. А не только ответ. мб я не прав
нужно, и это сделано.
смотри строку 30 в моем коде.
То что эта строка "зашкалила", претензии к оформлению форума (но можно было и внимательнее посмотреть).
0
Montanaa
5 / 5 / 2
Регистрация: 21.03.2011
Сообщений: 79
07.11.2011, 19:52 29
Цитата Сообщение от valeriikozlov Посмотреть сообщение
нужно, и это сделано.
смотри строку 30 в моем коде.
То что эта строка "зашкалила", претензии к оформлению форума (но можно было и внимательнее посмотреть).
я извиняюсь, уже заметил
0
Alisia
0 / 0 / 0
Регистрация: 05.11.2011
Сообщений: 23
07.11.2011, 19:56  [ТС] 30
Цитата Сообщение от valeriikozlov Посмотреть сообщение
нужно, и это сделано.
смотри строку 30 в моем коде.
То что эта строка "зашкалила", претензии к оформлению форума (но можно было и внимательнее посмотреть).
я пробовала так делать, не получается (

Добавлено через 3 минуты
Цитата Сообщение от valeriikozlov Посмотреть сообщение
нужно, и это сделано.
смотри строку 30 в моем коде.
То что эта строка "зашкалила", претензии к оформлению форума (но можно было и внимательнее посмотреть).
у меня вам личные сообщения не отправляются (
тестов проходит 2 или 3. в основном пишет, что или не правильный ответ на тест или ошибка времени исполнения
0
valeriikozlov
Эксперт С++
4687 / 2513 / 751
Регистрация: 18.08.2009
Сообщений: 4,550
07.11.2011, 19:56 31
Alisia, ссылку на тестирующую систему можете дать?
0
07.11.2011, 19:56
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.11.2011, 19:56

Морской бой. Оба игрока компьютер
Вопрос состоит в том, как реализовать Морской бой, когда оба игрока компьютер....

Если оба числа четные, то оба возвестив квадрат
Даны 2 вещественных числа, если они оба четные то оба возвестив квадрат, если...

Если открыть .exe от игры будет ли доступность модифицыровать её?
Доброго времени суток. Скрыл .exe с помощью Дизассемблером возможно ли...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
31
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru