Форум программистов, компьютерный форум CyberForum.ru

Число сочетаний - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 33, средняя оценка - 4.70
Ruslan1985
0 / 0 / 0
Регистрация: 03.03.2012
Сообщений: 7
09.03.2012, 16:18     Число сочетаний #1
Уважаемые юзеры форума,помогите
По данным натуральным http://www.cyberforum.ru/cgi-bin/latex.cgi?n и http://www.cyberforum.ru/cgi-bin/latex.cgi?k вычислите
http://www.cyberforum.ru/cgi-bin/latex.cgi?C^n_k = \frac{n!}{k! (n - k)!}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.03.2012, 16:18     Число сочетаний
Посмотрите здесь:

Описать рекурсивную функцию целого типа, находящую число сочетаний из n элементов по m, используя формулу C++
Перебор неповторяющихся сочетаний C++
найти число сочетаний из n элементов по m C++
Число сочетаний из n по k C++
C++ Cоставить программу, которая содержит рекурсивную функ-цию Combin2(N, K) целого типа, находящую C(N, K) – число сочетаний из N эле-ментов по K
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
09.03.2012, 16:25     Число сочетаний #2
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
 
int rec(int n, int k)
{
    if(n==k)
        return 1;
    if(k==1)
        return n;
    return rec(n-1, k-1)+rec(n-1, k);
}
 
int main()
{
    int n, k;
    scanf("%d%d", &n, &k);
    printf("%d", rec(n,k));
 
 
return 0;
}
Ruslan1985
0 / 0 / 0
Регистрация: 03.03.2012
Сообщений: 7
09.03.2012, 19:15  [ТС]     Число сочетаний #3
говорит частичное решения,помоги в чем проблема?
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
09.03.2012, 19:28     Число сочетаний #4
Цитата Сообщение от Ruslan1985 Посмотреть сообщение
говорит частичное решения
кто говорит?
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
09.03.2012, 21:04     Число сочетаний #5
Цитата Сообщение от valeriikozlov Посмотреть сообщение
кто говорит?
Наверное, они
Там нету ограничений на n и k, и, скорее всего, придется писать длинку, т.к. такой код тоже не проходит все тесты
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
#include <stdio.h>
 
typedef unsigned long long ull;
 
ull was_here[100][100];
 
ull rec(ull n, ull k)
{
        if ( was_here[n][k] )
            return was_here[n][k];
        
        if(n==k)
            was_here[n][k] = 1;
        else if(k==1)
                was_here[n][k] = n;
        else
            was_here[n][k] = rec(n-1, k-1)+rec(n-1, k);
            
        return was_here[n][k];
}
 
int main()
{
        ull n, k;
        scanf("%llu%llu", &n, &k);
        printf("%llu", rec(n,k));
 
 
return 0;
}
Добавлено через 9 минут
Да, там длинка нужна, прошло все тесты на
Java.
Java
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
41
42
43
44
45
46
47
48
49
50
51
import java.io.*;;
import java.util.*;
import java.math.BigInteger;
 
class Main
{
    public static void main(String[] args) throws IOException
    {
        new Main().run();
    }    
    
    Scanner in;
    PrintWriter out;
    
    public void run()
    {
        in = new Scanner(System.in);
        out = new PrintWriter(System.out);
        
        solve();
        
        out.flush();
    }
    
    private void solve()
    {
        int n = in.nextInt();
        int k = in.nextInt();
        
        BigInteger matrix[][] = new BigInteger[n + 1][k + 1];
        
        for (int i = 0; i <= n; ++i)
            for (int j = 1; j <= k; ++j)
                matrix[i][j] = BigInteger.ZERO;
                
        for (int i = 0; i <= n; ++i)
            matrix[i][0] = BigInteger.ONE;
            
        matrix[0][0] = BigInteger.ONE;
        
        for (int i = 1; i <= n; ++i)
        {
            for (int j = 1; j <= k; ++j)
            {
                matrix[i][j] = matrix[i - 1][j - 1].add( matrix[i - 1][j] );
            }
        }
        
        out.println(matrix[n][k]);
    }
}
Ruslan1985
0 / 0 / 0
Регистрация: 03.03.2012
Сообщений: 7
10.03.2012, 11:58  [ТС]     Число сочетаний #6
Говорит частичное решения,сделайте его без всяких новых библиотек ,тоесть стандартно как делает новичок просто for ,<iostream> без лишних новых операций
Yandex
Объявления
10.03.2012, 11:58     Число сочетаний
Ответ Создать тему
Опции темы

Текущее время: 06:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru